mirror of
https://github.com/narrrl/proton-sdk-rs.git
synced 2026-11-03 16:41:26 +01:00
Port 6cbf2f44 (stop retrying permanent API errors on block transfers) and 20822176 (small file upload interop); 6ce47922 is a no-op here. - Add ProtonApiError::is_retriable / ProtonError::is_retriable mirroring C# RetryPolicy.IsRetriable: 4xx is permanent except 404, 408 and 429, with envelope codes able to override the HTTP status. - Gate upload_one_block's retry loop on it so a permanent rejection of a revision fails immediately instead of being replayed three times. - Extract BlockTargets from RevisionReader so the whole-file download path, the public link download and the reader all re-mint expired block URLs through one generation-deduplicated refresh. - Fall back from the small upload to the block path on AlreadyExists only; the small upload is not idempotent, so everything else keeps propagating. - Bound a server-supplied Retry-After by RetryPolicy::max_retry_after (default 120 s) so a long rate-limit answer cannot look like a hang.