Cyberduck Mountain Duck CLI

#4427 closed defect (fixed)

WebDAV: Rename specifies Overwrite F when overwriting an existing file/folder

Reported by: Chris Byrne Owned by: dkocher
Priority: normal Milestone: 3.6
Component: webdav Version: 3.4.2
Severity: normal Keywords: webdav folder overwrite rename
Cc: Architecture:
Platform: Mac OS X 10.5

Description

When renaming a folder/file the user is asked if they want to overwrite the destination if it already exists. This rename fails with a conformant WebDAV server as the Overwrite header is set to F.

From RFC 4918 http://www.webdav.org/specs/rfc4918.html#METHOD_MOVE

If a resource exists at the destination and the Overwrite header is "T", then prior to performing the move, the server must perform a DELETE with "Depth: infinity" on the destination resource. If the Overwrite header is set to "F", then the operation will fail.

Steps to reproduce:

  1. Create two folders "a" and "b"
  2. Rename "b" to "a"
  3. Yes, you want to rename the existing file

Expected Results:

Folder "a" to be deleted, and folder "b" to be renamed to "a"

Actual Results:

I/O Error: Cannot rename folder

MOVE /files/b HTTP/1.1[\r][\n]
Authorization: Basic Y2hyaXM6[\r][\n]
User-Agent: Cyberduck/3.4.2 (5902) (Mac OS X/10.5.8) (i386)[\r][\n]
Host: 172.16.50.204[\r][\n]
Content-Length: 0[\r][\n]
Destination: http://172.16.50.204/files/a[\r][\n]
Overwrite: F[\r][\n]
[\r][\n]
HTTP/1.1 409 Precondition Failed[\r][\n]
HTTP/1.1 409 Precondition Failed[\r][\n]
Content-Length: 215[\r][\n]
Connection: Keep-Alive[\r][\n]
[\r][\n]

Where the precondition failure is:

The requested destination "http://172.16.50.204/files/b" is already mapped to a resource

Change History (2)

comment:1 Changed on Aug 23, 2010 at 2:54:51 PM by dkocher

  • Milestone set to 3.6
  • Status changed from new to assigned

We should omit the header because every overwrite is confirmed in the user interface.

From http://www.webdav.org/specs/rfc4918.html#HEADER_Overwrite:

If the overwrite header is not included in a COPY or MOVE request, then the resource must treat the request as if it has an overwrite header of value "T".

comment:2 Changed on Aug 23, 2010 at 2:55:25 PM by dkocher

  • Resolution set to fixed
  • Status changed from assigned to closed

In r6725.

Note: See TracTickets for help on using tickets.
swiss made software