Skip to content

perf(sftp): make downloads substantially faster - #55

Open
devin-ai-integration[bot] wants to merge 2 commits into
mainfrom
devin/1788947326-fast-sftp-download
Open

perf(sftp): make downloads substantially faster#55
devin-ai-integration[bot] wants to merge 2 commits into
mainfrom
devin/1788947326-fast-sftp-download

Conversation

@devin-ai-integration

Copy link
Copy Markdown

Summary

Downloads over SFTP were bottlenecked by per-request Discord REST round trips, a fixed and low amount of CDN parallelism, and O(n²) buffer copying in the SFTP read path. Four independent fixes:

1. Attachment URL cache (discord_bot.py) — every download_file() did channel.fetch_message(...) before touching the CDN, so an N-way parallel range download paid N REST round trips per part. URLs are now cached per message and concurrent misses for the same message share one lookup:

async def _resolve_attachment(channel, message_id) -> _CachedAttachment:
    if fresh(cache.get(message_id)): return cache[message_id]
    async with locks.setdefault(message_id, asyncio.Lock()):   # dedupe concurrent misses
        ...fetch_message once...

TTL is 15 min, clamped to the ?ex=<hex unix> expiry embedded in Discord's signed URL (minus a 60s margin), so a cached URL is never served after it stops working. Cache is capped at 4096 entries.

2. More CDN parallelismdownload_file_parallel used a hardcoded n = 4; it now scales one request per 2 MiB of range, 4..8. Message parts fetched concurrently went from 3 to 6 (matching the download_max_concurrent_parts config default, which the repository default contradicted).

3. SFTP read buffer (handler.py) — the buffer was a bytearray that was re-sliced on every prune (self._read_buf = self._read_buf[discard:]), copying up to 4 MiB of remaining data repeatedly during a sequential read. It's now a deque[(abs_offset, chunk)]; a read copies only the requested range (and returns a slice of a single chunk with no copy when it fits), and pruning is a popleft.

4. SSH transport — asyncssh defaults to ChaCha20-Poly1305; AES-GCM uses the CPU's AES instructions and benchmarks ~5x faster locally (~7.1 GB/s vs ~1.5 GB/s), so GCM/CTR are moved to the front of the offer list (all other algorithms keep their order, so no client loses compatibility). SSH compression is disabled — content is already compressed/encrypted, so it only burns CPU.

Also replaced the CDN total=120s timeout with sock_read=60s: a total deadline aborts otherwise healthy long-running range downloads on slow links, while the read timeout still catches a hung connection.

Testing

  • New tests cover attachment cache dedup/expiry, split-count scaling, and the deque read path (sequential, chunk-spanning, backward-seek restart, past-EOF).
  • Full suite: 509 passed. ruff clean; mypy clean except a pre-existing error in dcfs/auth/bearer.py (untouched).
  • Verified an asyncssh server accepts the new encryption_algs/compression_algs and negotiates AES-GCM.

Link to Devin session: https://app.devin.ai/sessions/bebf5d7564264685b19844fbef1e95eb
Open in Devin Desktop: https://app.devin.ai/desktop/session/bebf5d7564264685b19844fbef1e95eb?variant=devin
Requested by: @VulcanoSoftware

…ism and cheaper buffering

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@devin-ai-integration

Copy link
Copy Markdown
Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

@VulcanoSoftware

Copy link
Copy Markdown
Owner

de sftp download is nog steeds niks sneller geworden

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@devin-ai-integration

Copy link
Copy Markdown
Author

de sftp download is nog steeds niks sneller geworden

Twee dingen:

  1. Deze PR is nog niet gemerged. Als je tegen main test (of tegen een container die van vóór deze branch draait), meet je nog de oude code. Draai je deze branch al, en is de service daarna herstart?

  2. De twee stukken die ik hier zelf kan benchmarken zijn niet de bottleneck: de SFTP-leeslaag haalt 140–290 MB/s (vrijwel gelijk aan een kale asyncssh-server zonder DCFS) en de decryptie-stream 1.3 GB/s. Wat daarboven overblijft wordt bepaald door Discord — REST-latency en CDN-doorvoer per verbinding — en dat kan ik zonder bot-credentials niet meten.

Daarom staat er nu een meettool in deze branch, tools/bench_download.py, die je op de server kunt draaien:

DCFS_CONFIG_FILE=config.yaml python -m tools.bench_download /<client>/pad/naar/groot-bestand.bin 256

Die print de volledige DCFS-download plus de ruwe CDN-snelheid met 1, 4, 8 en 16 parallelle verbindingen op dezelfde attachment. Daaruit volgt direct waar de grens ligt:

  • schaalt CDN van 1 → 16 verbindingen nauwelijks mee, dan is de lijn (of Discord) de limiet en helpt meer parallelisme niets;
  • schaalt CDN wél mee maar blijft dcfs full download achter, dan zit het verlies in DCFS en los ik dat gericht op;
  • zit cdn single connection al op je totale downloadsnelheid, dan wordt er in de praktijk niet parallel gedownload en kijk ik naar de range-splitsing.

Stuur me die getallen (plus de bestandsgrootte en wat je nu via SFTP haalt), dan optimaliseer ik op basis van meting in plaats van gokwerk.

@VulcanoSoftware

Copy link
Copy Markdown
Owner
image het downloaden via sftp gaat nog steeds best traag. image het uploaden via sftp gaat aan een goede snelheid.

root@debian:/opt/dcfs# docker run --pull=always -it -p 1900:1900 -p 2121:2121 -p 2022:2022 -p 4445:4445 -v "/opt/dcfs:/home/dcfs/.dcfs" ghcr.io/vulcanosoftware/dcfs:latest
latest: Pulling from vulcanosoftware/dcfs
44136fa355b3: Already exists
dbb71bae5071: Pull complete
02efcf4b5fe5: Pull complete
80727edd9a33: Pull complete
cc8173d98ec2: Pull complete
9e736364255c: Pull complete
c2d8b6956866: Pull complete
148fa8d6b526: Pull complete
a7b4a2ddfd08: Pull complete
49333183dd88: Download complete
Digest: sha256:67dcd651e2a9871ade5149ba007c5b707ecba57211224cfa3287a5e254dbb03a
Status: Downloaded newer image for ghcr.io/vulcanosoftware/dcfs:latest
2026-09-09 10:35:20,256 - INFO - Using configuration file: /home/dcfs/.dcfs/config.yaml
2026-09-09 10:35:20,264 - WARNING - davey is not installed, voice will NOT be supported
2026-09-09 10:35:20,265 - INFO - logging in using static token
2026-09-09 10:35:21,346 - INFO - Shard ID None has connected to Gateway (Session ID: 4a384784cb373253d5fd4d2f3fd83752).
2026-09-09 10:35:23,382 - INFO - Deriving master key (argon2id, t=3, m=65536 KiB, p=4)
2026-09-09 10:35:23,691 - INFO - Master key ready (fingerprint=0e5cf1d1, salt=/home/dcfs/.dcfs/master.salt)
2026-09-09 10:35:26,505 - INFO - Loaded persistent SFTP host key from /home/dcfs/.dcfs/host.key
2026-09-09 10:35:26,507 - INFO - Creating SSH listener on 0.0.0.0, port 2022
2026-09-09 10:35:26,507 - INFO - Logged in as dcfs#1246 (ID: 1508124661572173937)
2026-09-09 10:35:26,509 - INFO - Config file parsed
2026-09-09 10:35:26,510 - INFO - Config file parsed
2026-09-09 10:35:26,519 - INFO - Starting DCFS server on 0.0.0.0:1900
INFO: Started server process [1]
INFO: Waiting for application startup.
2026-09-09 10:35:26,547 - INFO - Starting FTP server on 0.0.0.0:2121
2026-09-09 10:35:26,548 - INFO - Starting SFTP server on 0.0.0.0:2022
INFO: Application startup complete.
2026-09-09 10:35:26,549 - INFO - serving on 0.0.0.0:2121
2026-09-09 10:35:26,549 - INFO - Starting SMB server
INFO: Uvicorn running on http://0.0.0.0:1900 (Press CTRL+C to quit)
2026-09-09 10:35:41,262 - INFO - [conn=0] Accepted SSH client connection
2026-09-09 10:35:41,262 - INFO - [conn=0] Local address: 172.17.0.2, port 2022
2026-09-09 10:35:41,262 - INFO - [conn=0] Peer address: 192.168.129.136, port 33527
2026-09-09 10:35:43,220 - INFO - [conn=0] Beginning auth for user root
2026-09-09 10:35:43,230 - INFO - [conn=0] Auth for user root succeeded
2026-09-09 10:35:43,231 - INFO - [conn=0] Sending server host keys disabled
2026-09-09 10:35:43,238 - INFO - [conn=0, chan=0] New SSH session requested
2026-09-09 10:35:43,244 - INFO - [conn=0, chan=0] Subsystem: sftp
2026-09-09 10:35:43,244 - INFO - [conn=0, chan=0] Starting SFTP server
2026-09-09 10:35:45,931 - INFO - _detect cache MISS for (fv.id=fff2c6ce-371c-4080-b282-8a6297759ddd, size=1074200636)
2026-09-09 10:35:45,931 - INFO - _stream_parts: starting 1 parts, semaphore=6
2026-09-09 10:35:46,184 - INFO - CDN download: msg=1544361085203775631 range=0-59 should_range=True attach_size=8000000
2026-09-09 10:35:46,249 - INFO - CDN response: status=206 range_honoured=True connect_time=0.07s
2026-09-09 10:35:46,250 - INFO - _stream_parts: done in 0.32s, yielded 60 bytes across 1 parts
2026-09-09 10:35:46,251 - INFO - _detect: downloaded 60 bytes in 0.32s
2026-09-09 10:35:48,622 - INFO - _detect cache MISS for (fv.id=e29df96c-7140-4090-a6dd-81b8f2908d38, size=1074200636)
2026-09-09 10:35:48,622 - INFO - _stream_parts: starting 1 parts, semaphore=6
2026-09-09 10:35:48,952 - INFO - CDN download: msg=1547014380556787742 range=0-59 should_range=True attach_size=8000000
2026-09-09 10:35:48,985 - INFO - CDN response: status=206 range_honoured=True connect_time=0.03s
2026-09-09 10:35:48,986 - INFO - _stream_parts: done in 0.36s, yielded 60 bytes across 1 parts
2026-09-09 10:35:48,986 - INFO - _detect: downloaded 60 bytes in 0.36s
2026-09-09 10:35:48,986 - INFO - _detect: file IS encrypted (chunk_size=65536)
2026-09-09 10:35:55,484 - INFO - [conn=1] Accepted SSH client connection
2026-09-09 10:35:55,485 - INFO - [conn=1] Local address: 172.17.0.2, port 2022
2026-09-09 10:35:55,485 - INFO - [conn=1] Peer address: 192.168.129.136, port 47319
2026-09-09 10:35:55,500 - INFO - [conn=1] Beginning auth for user root
2026-09-09 10:35:55,508 - INFO - [conn=1] Auth for user root succeeded
2026-09-09 10:35:55,508 - INFO - [conn=1] Sending server host keys disabled
2026-09-09 10:35:55,514 - INFO - [conn=1, chan=0] New SSH session requested
2026-09-09 10:35:55,520 - INFO - [conn=1, chan=0] Subsystem: sftp
2026-09-09 10:35:55,521 - INFO - [conn=1, chan=0] Starting SFTP server
2026-09-09 10:35:55,558 - INFO - _stream_parts: starting 135 parts, semaphore=6
2026-09-09 10:35:55,560 - INFO - CDN download: msg=1547014380556787742 range=60-2000044 should_range=True attach_size=8000000
2026-09-09 10:35:55,562 - INFO - CDN download: msg=1547014380556787742 range=2000045-4000029 should_range=True attach_size=8000000
2026-09-09 10:35:55,564 - INFO - CDN download: msg=1547014380556787742 range=4000030-6000014 should_range=True attach_size=8000000
2026-09-09 10:35:55,566 - INFO - CDN download: msg=1547014380556787742 range=6000015-7999999 should_range=True attach_size=8000000
2026-09-09 10:35:55,615 - INFO - CDN response: status=206 range_honoured=True connect_time=0.06s
2026-09-09 10:35:55,644 - INFO - CDN response: status=206 range_honoured=True connect_time=0.08s
2026-09-09 10:35:55,669 - INFO - CDN response: status=206 range_honoured=True connect_time=0.10s
2026-09-09 10:35:55,679 - INFO - CDN response: status=206 range_honoured=True connect_time=0.11s
2026-09-09 10:35:55,820 - INFO - CDN download: msg=1547014436731097141 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:35:55,822 - INFO - CDN download: msg=1547014436731097141 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:35:55,825 - INFO - CDN download: msg=1547014436731097141 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:35:55,829 - INFO - CDN download: msg=1547014436731097141 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:35:55,866 - INFO - CDN download: msg=1547014413410766878 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:35:55,867 - INFO - CDN download: msg=1547014413410766878 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:35:55,870 - INFO - CDN download: msg=1547014413410766878 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:35:55,873 - INFO - CDN download: msg=1547014413410766878 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:35:55,954 - INFO - CDN response: status=206 range_honoured=True connect_time=0.13s
2026-09-09 10:35:55,982 - INFO - CDN response: status=206 range_honoured=True connect_time=0.11s
2026-09-09 10:35:56,078 - INFO - CDN response: status=206 range_honoured=True connect_time=0.26s
2026-09-09 10:35:56,090 - INFO - CDN response: status=206 range_honoured=True connect_time=0.27s
2026-09-09 10:35:56,107 - INFO - CDN download: msg=1547014390820372510 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:35:56,109 - INFO - CDN download: msg=1547014390820372510 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:35:56,112 - INFO - CDN download: msg=1547014390820372510 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:35:56,116 - INFO - CDN response: status=206 range_honoured=True connect_time=0.25s
2026-09-09 10:35:56,119 - INFO - CDN download: msg=1547014390820372510 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:35:56,122 - INFO - CDN response: status=206 range_honoured=True connect_time=0.29s
2026-09-09 10:35:56,137 - INFO - CDN download: msg=1547014424571936778 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:35:56,140 - INFO - CDN download: msg=1547014424571936778 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:35:56,142 - INFO - CDN download: msg=1547014424571936778 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:35:56,145 - INFO - CDN download: msg=1547014424571936778 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:35:56,186 - INFO - CDN response: status=206 range_honoured=True connect_time=0.08s
2026-09-09 10:35:56,271 - INFO - CDN response: status=206 range_honoured=True connect_time=0.13s
2026-09-09 10:35:56,399 - INFO - CDN response: status=206 range_honoured=True connect_time=0.53s
2026-09-09 10:35:56,519 - INFO - CDN response: status=206 range_honoured=True connect_time=0.40s
2026-09-09 10:35:56,526 - INFO - CDN response: status=206 range_honoured=True connect_time=0.41s
2026-09-09 10:35:56,593 - INFO - CDN response: status=206 range_honoured=True connect_time=0.45s
2026-09-09 10:35:56,603 - INFO - CDN response: status=206 range_honoured=True connect_time=0.46s
2026-09-09 10:35:56,626 - INFO - CDN response: status=206 range_honoured=True connect_time=0.48s
2026-09-09 10:35:57,354 - INFO - CDN response: status=206 range_honoured=True connect_time=1.24s
2026-09-09 10:35:57,787 - INFO - CDN download: msg=1547014401427767377 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:35:57,788 - INFO - CDN download: msg=1547014401427767377 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:35:57,792 - INFO - CDN download: msg=1547014401427767377 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:35:57,794 - INFO - CDN download: msg=1547014401427767377 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:35:57,806 - INFO - CDN response: status=206 range_honoured=True connect_time=1.93s
2026-09-09 10:35:57,867 - INFO - CDN response: status=206 range_honoured=True connect_time=0.08s
2026-09-09 10:35:57,914 - INFO - CDN response: status=206 range_honoured=True connect_time=0.12s
2026-09-09 10:35:57,934 - INFO - CDN response: status=206 range_honoured=True connect_time=0.14s
2026-09-09 10:35:58,023 - INFO - CDN response: status=206 range_honoured=True connect_time=0.23s
2026-09-09 10:35:59,396 - INFO - CDN download: msg=1547014445321027595 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:35:59,397 - INFO - CDN download: msg=1547014445321027595 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:35:59,399 - INFO - CDN download: msg=1547014445321027595 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:35:59,402 - INFO - CDN download: msg=1547014445321027595 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:35:59,456 - INFO - CDN response: status=206 range_honoured=True connect_time=0.06s
2026-09-09 10:35:59,473 - INFO - CDN response: status=206 range_honoured=True connect_time=0.07s
2026-09-09 10:35:59,512 - INFO - CDN response: status=206 range_honoured=True connect_time=0.11s
2026-09-09 10:35:59,530 - INFO - CDN response: status=206 range_honoured=True connect_time=0.13s
2026-09-09 10:36:04,559 - INFO - CDN download: msg=1547014456448393276 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:36:04,560 - INFO - CDN download: msg=1547014456448393276 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:36:04,562 - INFO - CDN download: msg=1547014456448393276 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:36:04,563 - INFO - CDN download: msg=1547014456448393276 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:36:04,602 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:36:04,603 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:36:04,605 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:36:04,611 - INFO - CDN response: status=206 range_honoured=True connect_time=0.05s
2026-09-09 10:36:12,904 - INFO - CDN download: msg=1547014467630530580 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:36:12,905 - INFO - CDN download: msg=1547014467630530580 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:36:12,907 - INFO - CDN download: msg=1547014467630530580 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:36:12,909 - INFO - CDN download: msg=1547014467630530580 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:36:12,939 - INFO - CDN response: status=206 range_honoured=True connect_time=0.03s
2026-09-09 10:36:12,953 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:36:12,974 - INFO - CDN response: status=206 range_honoured=True connect_time=0.07s
2026-09-09 10:36:13,042 - INFO - CDN response: status=206 range_honoured=True connect_time=0.13s
2026-09-09 10:36:17,502 - INFO - CDN download: msg=1547014478816743444 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:36:17,502 - INFO - CDN download: msg=1547014478816743444 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:36:17,503 - INFO - CDN download: msg=1547014478816743444 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:36:17,504 - INFO - CDN download: msg=1547014478816743444 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:36:17,540 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:36:17,541 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:36:17,551 - INFO - CDN response: status=206 range_honoured=True connect_time=0.05s
2026-09-09 10:36:17,562 - INFO - CDN response: status=206 range_honoured=True connect_time=0.06s
2026-09-09 10:36:20,556 - INFO - CDN download: msg=1547014490099548293 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:36:20,557 - INFO - CDN download: msg=1547014490099548293 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:36:20,558 - INFO - CDN download: msg=1547014490099548293 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:36:20,560 - INFO - CDN download: msg=1547014490099548293 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:36:20,589 - INFO - CDN response: status=206 range_honoured=True connect_time=0.03s
2026-09-09 10:36:20,589 - INFO - CDN response: status=206 range_honoured=True connect_time=0.03s
2026-09-09 10:36:20,606 - INFO - CDN response: status=206 range_honoured=True connect_time=0.05s
2026-09-09 10:36:20,630 - INFO - CDN response: status=206 range_honoured=True connect_time=0.07s
2026-09-09 10:36:28,482 - INFO - CDN download: msg=1547014500417413150 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:36:28,483 - INFO - CDN download: msg=1547014500417413150 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:36:28,485 - INFO - CDN download: msg=1547014500417413150 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:36:28,487 - INFO - CDN download: msg=1547014500417413150 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:36:28,516 - INFO - CDN response: status=206 range_honoured=True connect_time=0.03s
2026-09-09 10:36:28,520 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:36:28,524 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:36:28,550 - INFO - CDN response: status=206 range_honoured=True connect_time=0.06s
2026-09-09 10:36:41,108 - INFO - CDN download: msg=1547014512698462220 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:36:41,109 - INFO - CDN download: msg=1547014512698462220 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:36:41,111 - INFO - CDN download: msg=1547014512698462220 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:36:41,112 - INFO - CDN download: msg=1547014512698462220 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:36:41,145 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:36:41,147 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:36:41,152 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:36:41,154 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:36:44,303 - INFO - CDN download: msg=1547014521858687058 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:36:44,307 - INFO - CDN download: msg=1547014521858687058 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:36:44,309 - INFO - CDN download: msg=1547014521858687058 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:36:44,312 - INFO - CDN download: msg=1547014521858687058 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:36:44,349 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:36:44,349 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:36:44,358 - INFO - CDN response: status=206 range_honoured=True connect_time=0.05s
2026-09-09 10:36:44,366 - INFO - CDN response: status=206 range_honoured=True connect_time=0.06s
2026-09-09 10:36:44,581 - INFO - CDN download: msg=1547014555346018386 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:36:44,583 - INFO - CDN download: msg=1547014555346018386 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:36:44,585 - INFO - CDN download: msg=1547014555346018386 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:36:44,587 - INFO - CDN download: msg=1547014555346018386 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:36:44,705 - INFO - CDN response: status=206 range_honoured=True connect_time=0.12s
2026-09-09 10:36:44,706 - INFO - CDN response: status=206 range_honoured=True connect_time=0.12s
2026-09-09 10:36:44,711 - INFO - CDN response: status=206 range_honoured=True connect_time=0.12s
2026-09-09 10:36:45,015 - INFO - CDN response: status=206 range_honoured=True connect_time=0.43s
2026-09-09 10:36:45,552 - INFO - CDN download: msg=1547014532860219506 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:36:45,553 - INFO - CDN download: msg=1547014532860219506 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:36:45,555 - INFO - CDN download: msg=1547014532860219506 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:36:45,557 - INFO - CDN download: msg=1547014532860219506 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:36:45,585 - INFO - CDN response: status=206 range_honoured=True connect_time=0.03s
2026-09-09 10:36:45,588 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:36:45,592 - INFO - CDN response: status=206 range_honoured=True connect_time=0.03s
2026-09-09 10:36:45,658 - INFO - CDN response: status=206 range_honoured=True connect_time=0.10s
2026-09-09 10:36:46,316 - INFO - CDN download: msg=1547014544386302074 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:36:46,318 - INFO - CDN download: msg=1547014544386302074 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:36:46,319 - INFO - CDN download: msg=1547014544386302074 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:36:46,322 - INFO - CDN download: msg=1547014544386302074 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:36:46,350 - INFO - CDN response: status=206 range_honoured=True connect_time=0.03s
2026-09-09 10:36:46,355 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:36:46,406 - INFO - CDN response: status=206 range_honoured=True connect_time=0.09s
2026-09-09 10:36:46,409 - INFO - CDN response: status=206 range_honoured=True connect_time=0.09s
2026-09-09 10:37:24,508 - INFO - CDN download: msg=1547014577097539656 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:37:24,509 - INFO - CDN download: msg=1547014577097539656 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:37:24,510 - INFO - CDN download: msg=1547014577097539656 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:37:24,511 - INFO - CDN download: msg=1547014577097539656 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:37:24,547 - INFO - CDN download: msg=1547014566159061032 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:37:24,551 - INFO - CDN download: msg=1547014566159061032 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:37:24,553 - INFO - CDN download: msg=1547014566159061032 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:37:24,555 - INFO - CDN download: msg=1547014566159061032 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:37:24,573 - INFO - CDN response: status=206 range_honoured=True connect_time=0.06s
2026-09-09 10:37:24,578 - INFO - CDN response: status=206 range_honoured=True connect_time=0.07s
2026-09-09 10:37:24,596 - INFO - CDN response: status=206 range_honoured=True connect_time=0.08s
2026-09-09 10:37:24,597 - INFO - CDN response: status=206 range_honoured=True connect_time=0.09s
2026-09-09 10:37:24,639 - INFO - CDN response: status=206 range_honoured=True connect_time=0.08s
2026-09-09 10:37:24,646 - INFO - CDN response: status=206 range_honoured=True connect_time=0.09s
2026-09-09 10:37:24,647 - INFO - CDN response: status=206 range_honoured=True connect_time=0.10s
2026-09-09 10:37:24,657 - INFO - CDN response: status=206 range_honoured=True connect_time=0.11s
2026-09-09 10:37:39,144 - INFO - CDN download: msg=1547014586765680723 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:37:39,145 - INFO - CDN download: msg=1547014586765680723 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:37:39,147 - INFO - CDN download: msg=1547014586765680723 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:37:39,149 - INFO - CDN download: msg=1547014586765680723 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:37:39,190 - INFO - CDN response: status=206 range_honoured=True connect_time=0.05s
2026-09-09 10:37:39,193 - INFO - CDN response: status=206 range_honoured=True connect_time=0.05s
2026-09-09 10:37:39,193 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:37:39,207 - INFO - CDN response: status=206 range_honoured=True connect_time=0.06s
2026-09-09 10:37:47,316 - INFO - CDN download: msg=1547014598073524225 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:37:47,317 - INFO - CDN download: msg=1547014598073524225 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:37:47,317 - INFO - CDN download: msg=1547014598073524225 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:37:47,318 - INFO - CDN download: msg=1547014598073524225 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:37:47,354 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:37:47,356 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:37:47,360 - INFO - CDN download: msg=1547014622668652595 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:37:47,362 - INFO - CDN download: msg=1547014622668652595 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:37:47,364 - INFO - CDN response: status=206 range_honoured=True connect_time=0.05s
2026-09-09 10:37:47,366 - INFO - CDN download: msg=1547014622668652595 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:37:47,368 - INFO - CDN response: status=206 range_honoured=True connect_time=0.05s
2026-09-09 10:37:47,370 - INFO - CDN download: msg=1547014622668652595 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:37:47,704 - INFO - CDN download: msg=1547014609871966339 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:37:47,707 - INFO - CDN download: msg=1547014609871966339 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:37:47,709 - INFO - CDN download: msg=1547014609871966339 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:37:47,712 - INFO - CDN download: msg=1547014609871966339 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:37:47,774 - INFO - CDN response: status=206 range_honoured=True connect_time=0.41s
2026-09-09 10:37:47,787 - INFO - CDN response: status=206 range_honoured=True connect_time=0.42s
2026-09-09 10:37:47,815 - INFO - CDN response: status=206 range_honoured=True connect_time=0.45s
2026-09-09 10:37:47,819 - INFO - CDN response: status=206 range_honoured=True connect_time=0.11s
2026-09-09 10:37:47,838 - INFO - CDN response: status=206 range_honoured=True connect_time=0.13s
2026-09-09 10:37:47,850 - INFO - CDN response: status=206 range_honoured=True connect_time=0.14s
2026-09-09 10:37:47,901 - INFO - CDN response: status=206 range_honoured=True connect_time=0.19s
2026-09-09 10:37:48,064 - INFO - CDN response: status=206 range_honoured=True connect_time=0.70s
2026-09-09 10:37:48,358 - INFO - CDN download: msg=1547014644185702520 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:37:48,359 - INFO - CDN download: msg=1547014644185702520 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:37:48,362 - INFO - CDN download: msg=1547014644185702520 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:37:48,367 - INFO - CDN download: msg=1547014644185702520 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:37:48,448 - INFO - CDN response: status=206 range_honoured=True connect_time=0.09s
2026-09-09 10:37:48,562 - INFO - CDN response: status=206 range_honoured=True connect_time=0.20s
2026-09-09 10:37:48,747 - INFO - CDN response: status=206 range_honoured=True connect_time=0.39s
2026-09-09 10:37:48,806 - INFO - CDN response: status=206 range_honoured=True connect_time=0.44s
2026-09-09 10:37:49,308 - INFO - CDN download: msg=1547014630541627443 range=0-1999999 should_range=True attach_size=8000000
2026-09-09 10:37:49,309 - INFO - CDN download: msg=1547014630541627443 range=2000000-3999999 should_range=True attach_size=8000000
2026-09-09 10:37:49,312 - INFO - CDN download: msg=1547014630541627443 range=4000000-5999999 should_range=True attach_size=8000000
2026-09-09 10:37:49,313 - INFO - CDN download: msg=1547014630541627443 range=6000000-7999999 should_range=True attach_size=8000000
2026-09-09 10:37:49,360 - INFO - CDN response: status=206 range_honoured=True connect_time=0.05s
2026-09-09 10:37:49,407 - INFO - CDN response: status=206 range_honoured=True connect_time=0.10s
2026-09-09 10:37:49,440 - INFO - CDN response: status=206 range_honoured=True connect_time=0.12s
2026-09-09 10:37:49,441 - INFO - CDN response: status=206 range_honoured=True connect_time=0.13s
2026-09-09 10:37:56,896 - INFO - _stream_parts: done in 121.34s, yielded 128255009 bytes across 135 parts
2026-09-09 10:38:03,502 - INFO - Created directory nieuw in GitHub repository at new/nieuw/.gitkeep
2026-09-09 10:38:10,334 - INFO - Created file reference 1GB.bin in VulcanoSoftware/dcfs_metadata at new/nieuw/1GB.bin.1547194395617402920
2026-09-09 10:38:12,569 - INFO - Sending 8000000 bytes as '[part1]1GB.bin' to chat 1544335068208832542
2026-09-09 10:38:15,165 - INFO - Sending 8000000 bytes as '[part2]1GB.bin' to chat 1544335068208832542
2026-09-09 10:38:17,769 - INFO - Sending 8000000 bytes as '[part3]1GB.bin' to chat 1544335068208832542
2026-09-09 10:38:20,357 - INFO - Sending 8000000 bytes as '[part4]1GB.bin' to chat 1544335068208832542
2026-09-09 10:38:22,970 - INFO - Sending 8000000 bytes as '[part5]1GB.bin' to chat 1544335068208832542
2026-09-09 10:38:25,560 - INFO - Sending 8000000 bytes as '[part6]1GB.bin' to chat 1544335068208832542
2026-09-09 10:38:28,177 - INFO - Sending 8000000 bytes as '[part7]1GB.bin' to chat 1544335068208832542
2026-09-09 10:38:30,756 - INFO - Sending 8000000 bytes as '[part8]1GB.bin' to chat 1544335068208832542
2026-09-09 10:38:33,548 - INFO - Sending 8000000 bytes as '[part9]1GB.bin' to chat 1544335068208832542
2026-09-09 10:38:36,162 - INFO - Sending 8000000 bytes as '[part10]1GB.bin' to chat 1544335068208832542
2026-09-09 10:38:38,762 - INFO - Sending 8000000 bytes as '[part11]1GB.bin' to chat 1544335068208832542
2026-09-09 10:38:41,362 - INFO - Sending 8000000 bytes as '[part12]1GB.bin' to chat 1544335068208832542
2026-09-09 10:38:43,958 - INFO - Sending 8000000 bytes as '[part13]1GB.bin' to chat 1544335068208832542
2026-09-09 10:38:46,559 - INFO - Sending 8000000 bytes as '[part14]1GB.bin' to chat 1544335068208832542
2026-09-09 10:38:49,170 - INFO - Sending 8000000 bytes as '[part15]1GB.bin' to chat 1544335068208832542
2026-09-09 10:38:51,759 - INFO - Sending 8000000 bytes as '[part16]1GB.bin' to chat 1544335068208832542
2026-09-09 10:38:54,159 - INFO - Sending 7553644 bytes as '[part17]1GB.bin' to chat 1544335068208832542
2026-09-09 10:38:57,896 - INFO - _detect cache MISS for (fv.id=92f445df-b07b-4799-88f5-733b8c097535, size=135553644)
2026-09-09 10:38:57,896 - INFO - _stream_parts: starting 1 parts, semaphore=6
2026-09-09 10:38:58,196 - INFO - [conn=1, chan=0] Received channel close
2026-09-09 10:38:58,196 - INFO - [conn=1, chan=0] Channel closed
2026-09-09 10:38:58,198 - INFO - [conn=0, chan=0] Received channel close
2026-09-09 10:38:58,200 - INFO - [conn=0, chan=0] SFTP server exited
2026-09-09 10:38:58,201 - INFO - [conn=0, chan=0] Closing channel
2026-09-09 10:38:58,202 - INFO - [conn=0, chan=0] Channel closed
2026-09-09 10:38:58,204 - INFO - CDN download: msg=1547194422758871090 range=0-59 should_range=True attach_size=8000000
2026-09-09 10:38:58,474 - INFO - CDN response: status=206 range_honoured=True connect_time=0.27s
2026-09-09 10:38:58,474 - INFO - _stream_parts: done in 0.58s, yielded 60 bytes across 1 parts
2026-09-09 10:38:58,475 - INFO - _detect: downloaded 60 bytes in 0.58s
2026-09-09 10:38:58,476 - INFO - _detect: file IS encrypted (chunk_size=65536)
2026-09-09 10:38:58,478 - INFO - [conn=1, chan=0] SFTP server exited: Channel not open for sending
2026-09-09 10:38:58,478 - INFO - [conn=1, chan=0] Closing channel
INFO: 192.168.129.136:34307 - "PROPFIND /webdav HTTP/1.1" 401 Unauthorized
INFO: 192.168.129.136:34307 - "PROPFIND /webdav HTTP/1.1" 307 Temporary Redirect
INFO: 192.168.129.136:34307 - "PROPFIND /webdav/ HTTP/1.1" 207 Multi-Status
2026-09-09 10:40:26,671 - INFO - GET favicon.ico begin=0 end=-1 range=False
2026-09-09 10:40:26,671 - WARNING - GET favicon.ico: member not found (404)
INFO: 192.168.129.136:34307 - "GET /webdav/favicon.ico HTTP/1.1" 404 Not Found
INFO: 192.168.129.136:34307 - "GET /favicon.ico HTTP/1.1" 404 Not Found
2026-09-09 10:40:28,420 - INFO - _detect cache MISS for (fv.id=fff2c6ce-371c-4080-b282-8a6297759ddd, size=1074200636)
2026-09-09 10:40:28,421 - INFO - _stream_parts: starting 1 parts, semaphore=6
2026-09-09 10:40:28,421 - INFO - CDN download: msg=1544361085203775631 range=0-59 should_range=True attach_size=8000000
2026-09-09 10:40:28,485 - INFO - CDN response: status=206 range_honoured=True connect_time=0.06s
2026-09-09 10:40:28,486 - INFO - _stream_parts: done in 0.07s, yielded 60 bytes across 1 parts
2026-09-09 10:40:28,487 - INFO - _detect: downloaded 60 bytes in 0.07s
INFO: 192.168.129.136:34307 - "PROPFIND /webdav/default/ HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "/usr/local/lib/python3.13/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi
result = await app( # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self.scope, self.receive, self.send
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in call
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/fastapi/applications.py", line 1139, in call
await super().call(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/applications.py", line 112, in call
await self.middleware_stack(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/errors.py", line 187, in call
raise exc
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/errors.py", line 165, in call
await self.app(scope, receive, _send)
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/base.py", line 183, in call
raise app_exc
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/base.py", line 183, in call
raise app_exc
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/cors.py", line 85, in call
await self.app(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/exceptions.py", line 62, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/usr/local/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/usr/local/lib/python3.13/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in call
await self.app(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/routing.py", line 714, in call
await self.middleware_stack(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/routing.py", line 734, in app
await route.handle(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/routing.py", line 460, in handle
await self.app(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/fastapi/applications.py", line 1139, in call
await super().call(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/applications.py", line 112, in call
await self.middleware_stack(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/errors.py", line 187, in call
raise exc
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/errors.py", line 165, in call
await self.app(scope, receive, _send)
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/cors.py", line 85, in call
await self.app(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/exceptions.py", line 62, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/usr/local/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/usr/local/lib/python3.13/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in call
await self.app(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/routing.py", line 714, in call
await self.middleware_stack(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/routing.py", line 734, in app
await route.handle(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/routing.py", line 288, in handle
await self.app(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/fastapi/routing.py", line 120, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/usr/local/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/usr/local/lib/python3.13/site-packages/fastapi/routing.py", line 106, in app
response = await f(request)
^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/fastapi/routing.py", line 430, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<3 lines>...
)
^
File "/usr/local/lib/python3.13/site-packages/fastapi/routing.py", line 316, in run_endpoint_function
return await dependant.call(**values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/asgidav/app.py", line 99, in handle_propfind
resp = await propfind((member,), r.depth, r.props, base_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/asgidav/reqres.py", line 135, in propfind
for propfind_responses in await async_map(
^^^^^^^^^^^^^^^^
...<3 lines>...
):
^
File "/app/asgidav/async_map.py", line 42, in async_map
raise ex
File "/app/asgidav/async_map.py", line 36, in async_map
results.append(await coro)
^^^^^^^^^^
File "/usr/local/lib/python3.13/asyncio/tasks.py", line 634, in _wait_for_one
return f.result() if resolve else f
~~~~~~~~^^
File "/app/asgidav/async_map.py", line 30, in _wrapped
return await func(item)
^^^^^^^^^^^^^^^^
File "/app/asgidav/reqres.py", line 116, in _propfind_response
propfind_responses = await async_map(
^^^^^^^^^^^^^^^^
...<3 lines>...
)
^
File "/app/asgidav/async_map.py", line 42, in async_map
raise ex
File "/app/asgidav/async_map.py", line 36, in async_map
results.append(await coro)
^^^^^^^^^^
File "/usr/local/lib/python3.13/asyncio/tasks.py", line 634, in _wait_for_one
return f.result() if resolve else f
~~~~~~~~^^
File "/app/asgidav/async_map.py", line 30, in _wrapped
return await func(item)
^^^^^^^^^^^^^^^^
File "/app/asgidav/reqres.py", line 98, in _propfind_response
propstat_elem = await _propstat(
^^^^^^^^^^^^^^^^
...<2 lines>...
)
^
File "/app/asgidav/reqres.py", line 70, in _propstat
properties: Properties = await member.get_properties()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/asgidav/resource.py", line 27, in get_properties
**properties, getcontentlength=str(max(0, await self.content_length()))
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/dcfs/app/webdav/resource.py", line 50, in content_length
return await self.__client.fc_repo.content_length(fv)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/dcfs/crypto/repository.py", line 255, in content_length
detected = await self._detect(fv, "")
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/dcfs/crypto/repository.py", line 329, in _detect
FileHeader.verify(raw_header, file_key)
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
File "/app/dcfs/crypto/header.py", line 168, in verify
raise InvalidHeaderError("header MAC verification failed")
dcfs.crypto.header.InvalidHeaderError: header MAC verification failed
2026-09-09 10:40:40,038 - INFO - _detect cache MISS for (fv.id=fff2c6ce-371c-4080-b282-8a6297759ddd, size=1074200636)
2026-09-09 10:40:40,038 - INFO - _stream_parts: starting 1 parts, semaphore=6
2026-09-09 10:40:40,039 - INFO - CDN download: msg=1544361085203775631 range=0-59 should_range=True attach_size=8000000
2026-09-09 10:40:40,081 - INFO - CDN response: status=206 range_honoured=True connect_time=0.04s
2026-09-09 10:40:40,082 - INFO - _stream_parts: done in 0.04s, yielded 60 bytes across 1 parts
2026-09-09 10:40:40,082 - INFO - _detect: downloaded 60 bytes in 0.04s
INFO: 192.168.129.136:34308 - "PROPFIND /webdav/default/ HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "/usr/local/lib/python3.13/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi
result = await app( # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self.scope, self.receive, self.send
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in call
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/fastapi/applications.py", line 1139, in call
await super().call(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/applications.py", line 112, in call
await self.middleware_stack(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/errors.py", line 187, in call
raise exc
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/errors.py", line 165, in call
await self.app(scope, receive, _send)
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/base.py", line 183, in call
raise app_exc
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/base.py", line 183, in call
raise app_exc
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/cors.py", line 85, in call
await self.app(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/exceptions.py", line 62, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/usr/local/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/usr/local/lib/python3.13/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in call
await self.app(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/routing.py", line 714, in call
await self.middleware_stack(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/routing.py", line 734, in app
await route.handle(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/routing.py", line 460, in handle
await self.app(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/fastapi/applications.py", line 1139, in call
await super().call(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/applications.py", line 112, in call
await self.middleware_stack(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/errors.py", line 187, in call
raise exc
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/errors.py", line 165, in call
await self.app(scope, receive, _send)
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/cors.py", line 85, in call
await self.app(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/middleware/exceptions.py", line 62, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/usr/local/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/usr/local/lib/python3.13/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in call
await self.app(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/routing.py", line 714, in call
await self.middleware_stack(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/routing.py", line 734, in app
await route.handle(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/routing.py", line 288, in handle
await self.app(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/fastapi/routing.py", line 120, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "/usr/local/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/usr/local/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/usr/local/lib/python3.13/site-packages/fastapi/routing.py", line 106, in app
response = await f(request)
^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/fastapi/routing.py", line 430, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<3 lines>...
)
^
File "/usr/local/lib/python3.13/site-packages/fastapi/routing.py", line 316, in run_endpoint_function
return await dependant.call(**values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/asgidav/app.py", line 99, in handle_propfind
resp = await propfind((member,), r.depth, r.props, base_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/asgidav/reqres.py", line 135, in propfind
for propfind_responses in await async_map(
^^^^^^^^^^^^^^^^
...<3 lines>...
):
^
File "/app/asgidav/async_map.py", line 42, in async_map
raise ex
File "/app/asgidav/async_map.py", line 36, in async_map
results.append(await coro)
^^^^^^^^^^
File "/usr/local/lib/python3.13/asyncio/tasks.py", line 634, in _wait_for_one
return f.result() if resolve else f
~~~~~~~~^^
File "/app/asgidav/async_map.py", line 30, in _wrapped
return await func(item)
^^^^^^^^^^^^^^^^
File "/app/asgidav/reqres.py", line 116, in _propfind_response
propfind_responses = await async_map(
^^^^^^^^^^^^^^^^
...<3 lines>...
)
^
File "/app/asgidav/async_map.py", line 42, in async_map
raise ex
File "/app/asgidav/async_map.py", line 36, in async_map
results.append(await coro)
^^^^^^^^^^
File "/usr/local/lib/python3.13/asyncio/tasks.py", line 634, in _wait_for_one
return f.result() if resolve else f
~~~~~~~~^^
File "/app/asgidav/async_map.py", line 30, in _wrapped
return await func(item)
^^^^^^^^^^^^^^^^
File "/app/asgidav/reqres.py", line 98, in _propfind_response
propstat_elem = await _propstat(
^^^^^^^^^^^^^^^^
...<2 lines>...
)
^
File "/app/asgidav/reqres.py", line 70, in _propstat
properties: Properties = await member.get_properties()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/asgidav/resource.py", line 27, in get_properties
**properties, getcontentlength=str(max(0, await self.content_length()))
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/dcfs/app/webdav/resource.py", line 50, in content_length
return await self.__client.fc_repo.content_length(fv)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/dcfs/crypto/repository.py", line 255, in content_length
detected = await self._detect(fv, "")
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/dcfs/crypto/repository.py", line 329, in _detect
FileHeader.verify(raw_header, file_key)
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
File "/app/dcfs/crypto/header.py", line 168, in verify
raise InvalidHeaderError("header MAC verification failed")
dcfs.crypto.header.InvalidHeaderError: header MAC verification failed

webdav blijkt het niet echt meer te doen.

image

dit is mijn internetsnelheid

@VulcanoSoftware

Copy link
Copy Markdown
Owner

Rei.Fs.SimpleWebException: De externe server heeft een fout geretourneerd: (500) Interne serverfout.
bij Rei.Fs.Webdav.WebdavFs.GetResponse(HttpWebRequest request, Boolean notreqstream)
bij Rei.Fs.Webdav.WebdavFs.InnerGetInfo(Uri target, DepthType depth)
bij Rei.Fs.Webdav.WebdavFs.GetInfoAndEntries(ResourceId id)
bij CarotDAV.CacheManager.GetInfoAndEntries(FsBase fs, ResourceId id, Boolean enablecache)
bij CarotDAV.MainForm.Fs_GetInfoAndInnerEntries(Uri uri, ResourceId id, ResourceId parentid, Boolean enablecache)

de webdav werkt nog steeds niet.
de downloadsnelheid is ook nog steeds niet sneller.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant