cryptomator / cryptomator/cli

WebDAV PROPFIND returns 404 for displayname/resourcetype after successful PUT, causing rclone to fail

Open
#102 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
427
Forks
52
Avg merge
20h 37m
Merged PRs (30d)
2

Description

### Please agree to the following

- [x] I have searched [existing issues](https://github.com/cryptomator/cli/issues?q=) for duplicates
- [x] I agree to follow this project's [Code of Conduct](https://github.com/cryptomator/cli/blob/develop/.github/CODE_OF_CONDUCT.md)

### Summary

When using Cryptomator CLI with the WebDAV mounter, uploading a file via WebDAV succeeds with `201 Created`, and the uploaded file can be read back with `curl`.

However, `rclone` fails immediately after the successful `PUT`, because its follow-up `PROPFIND` receives a `207 Multi-Status` response where some requested properties return `404 Not Found` while others return `200 OK`.

Specifically, for an uploaded file:

```text
displayname -> 404 Not Found
resourcetype -> 404 Not Found
getlastmodified -> 200 OK
getcontentlength -> 200 OK
```

This causes rclone to treat the object as missing and fail with:
```text
Failed to copy: object not found
```

### What software is involved?

- Operating System: Debian 13
- Cryptomator CLI: 0.6.2
- Rclone: 1.74.2

### Volume Type

WebDAV (HTTP Address)

### Steps to Reproduce

1. Start Cryptomator CLI with the WebDAV fallback mounter, for example:
```bash
cryptomator-cli unlock \
--mounter=org.cryptomator.frontend.webdav.mount.FallbackMounter \
--volumeId=vault \
--loopbackPort=59317 \
"/tmp/test-vault"
```

2. In another terminal, prepare a test file:
```bash
mkdir -p /tmp/rclone-webdav-src
printf 'hello from rclone webdav trace\n' > /tmp/rclone-webdav-src/test.txt
```

3. Run rclone against the Cryptomator WebDAV endpoint:
```bash
rclone copy /tmp/rclone-webdav-src :webdav:rclone-trace-test \
--config /dev/null \
--webdav-url "http://127.0.0.1:59317/vault/" \
--webdav-vendor other \
--webdav-user cryptomator \
--webdav-pass "$(rclone obscure cryptomator)" \
--transfers 1 \
--checkers 1 \
--retries 1 \
--low-level-retries 1 \
--dump headers,bodies \
-vv
```

4. As a control test, uploading and reading the same file with curl works:
```bash
curl -u cryptomator:cryptomator \
-X MKCOL \
"http://127.0.0.1:59317/vault/curl-control/"

curl -u cryptomator:cryptomator \
-T /tmp/rclone-webdav-src/test.txt \
"http://127.0.0.1:59317/vault/curl-control/test.txt"

curl -u cryptomator:cryptomator \
"http://127.0.0.1:59317/vault/curl-control/test.txt"
```

5. The final curl command returns:
```text
hello from rclone webdav trace
```

### Expected Behavior

After a successful `PUT`, the uploaded file should be discoverable through `PROPFIND` in a way that common WebDAV clients can recognize it as an existing regular file.

For the properties requested by rclone:

```xml

```

the response should allow the client to determine that:

- the resource exists
- it is a regular file, not a collection
- its content length is available
- its last modified timestamp is available

Ideally, `displayname`, `getlastmodified`, `getcontentlength`, and `resourcetype` should be returned in a successful `200 OK` propstat for an existing file. For a regular file, `resourcetype` can be returned as an empty property.

rclone should be able to complete the upload successfully instead of failing after the successful `PUT` with `object not found`.

### Actual Behavior

The `PUT` succeeds:

```text
PUT /vault/rclone-trace-test/test.txt HTTP/1.1
HTTP/1.1 201 Created
```

But the follow-up `PROPFIND` returns a mixed `207 Multi-Status` response:

```xml


http://127.0.0.1:59317/vault/rclone-trace-test/test.txt





HTTP/1.1 404 Not Found



Fri, 5 Jun 2026 21:18:54 GMT
31

HTTP/1.1 200 OK

```

rclone then fails with:

```text
Failed to copy: object not found
```

### Reproducibility

Always

### Relevant Log Output

rclone:

```shell
PROPFIND /vault/rclone-trace-test HTTP/1.1
HTTP/1.1 404 Not Found

PROPFIND /vault/rclone-trace-test/ HTTP/1.1
HTTP/1.1 404 Not Found

MKCOL /vault/rclone-trace-test/ HTTP/1.1
HTTP/1.1 201 Created

PUT /vault/rclone-trace-test/test.txt HTTP/1.1
Content-Length: 31

hello from rclone webdav trace

HTTP/1.1 201 Created

PROPFIND /vault/rclone-trace-test/test.txt HTTP/1.1
HTTP/1.1 207 Multi-Status

http://127.0.0.1:59317/vault/rclone-trace-test/test.txtHTTP/1.1 404 Not FoundFri, 5 Jun 2026 21:18:54 GMT31HTTP/1.1 200 OK

ERROR : test.txt: Failed to copy: object not found
NOTICE: Failed to copy: object not found
```

### Anything else?

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.