Highlights
🐛 WebDAV: large files no longer corrupt when copied through the mount
The WebDAV provider ignored the HTTP Range header and answered every GET with the entire file body. Clients that read large files as a series of byte ranges (e.g. macOS Finder / webdavfs) would write each full-body response at the requested offset, corrupting the copied file. The server now advertises Accept-Ranges and answers Range requests with proper 206 Partial Content responses, seeking within the open AFC handle via a new AfcService.fseek().
pymobiledevice3 webdav start-server --mount🐛 WebDAV: server shuts down when the device disconnects
Previously the WebDAV runner kept the server, the local mount, and the process alive serving errors after the device disconnected, until Ctrl-C. It now detects the AFC connection termination, tears down cleanly (unmount + stop), and cooperates with --reconnect so the share comes back automatically when the device returns.
🐛 --reconnect waits for the right device
With multiple devices attached, the --reconnect retry loop was satisfied by any connected device: the wait returned instantly, the re-invocation could fail with DeviceNotFoundError (killing the loop), and a device chosen at the interactive prompt was forgotten — silently re-targeting another attached device while the original was still rebooting. The loop now records which device was originally selected and waits for that specific device to come back.
What's Changed
- 85b9a12 webdav: serve Range requests to prevent large-file corruption (#1866) (@doronz88)
- 7150279 cli: Make --reconnect wait for and re-target the originally selected device (#1865) (@doronz88)
- d770f99 webdav: Close the server when the device disconnects (#1865) (@doronz88)
Full Changelog: v10.10.3...v10.10.4