fix: Handle Depth
header for COPY
as this is required by RFC
#1495
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently Sabre\DAV does not support the
Depth
header onCOPY
andMOVE
.But the RFC4918 requires servers to do so, the header is not required but:
MOVE
the header, if available, must be 'infinity' -> We just have to check the header and throw bad request otherwiseCOPY
the header may 'infinity' or a positive integer including 0So especially the
COPY
method is currently broken, we noticed this when using the WebDAV litmus test bench (version 0.14) which checks for shallow copies (meaning copy a collection with depth 0).This PR fixes all of this points, while trying to keep backwards compatible. Of cause any using application that implements
ICopyTarget::copyInto
is still broken and need to adapt to the depth change (it continues to work as before, but the bug fix does not propagate).Reference from the RFC:
COPY
Depth
'infinity' and '0': rfc4918#section-9.8.3MOVE
onlyDepth: infinity
is allowed: rfc4918#section-9.9.2