http://subversion.tigris.org/issues/show_bug.cgi?id=2896
Issue #|2896
Summary|creation of a lock-empty resource
should return 201, n
|ot 200
Component|subversion
Version|1.4.x
Platform|PC
URL|http://subversion.tigris.org/servlets/ReadMsg?list=dev
|&msgNo=129529
OS/Version|Linux
Status|NEW
Status whiteboard|
Keywords|
Resolution|
Issue type|DEFECT
Priority|P2
Subcomponent|mod_dav_svn
Assigned to|issues subversion
Reported by|tolsen718
------- Additional comments from tolsen718 tigris.org Tue Aug 28 10:34:21 -0700 2007 -------
Creation of a lock-empty resource on a subversion
autoversioning DAV server
returns a 200 response, but RFC 4918 requires that the
server MUST return a 201
response. See http://greenbytes.de/tech/webdav/rfc4918.html#lo
ck-unmapped-urls
Here is a sample interaction using cadaver:
dav:/svn/autov/tim/test/> ls
Listing collection `/svn/autov/tim/test/': collection is
empty.
dav:/svn/autov/tim/test/> set debug http
dav:/svn/autov/tim/test/> lock unmapped
Running pre_send hooks
Sending request headers:
PROPFIND /svn/autov/tim/test/unmapped HTTP/1.1
Host: dubstep.brooklynpenguin.com
User-Agent: cadaver/0.22.5 neon/0.26.4
Connection: TE
TE: trailers
Depth: 0
Content-Length: 288
Content-Type: application/xml
Authorization:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sending request-line and headers:
Sending request body:
Request sent; retry is 1.
Aborted request (-3): Could not read status line
Persistent connection timed out, retrying.
Sending request-line and headers:
Connecting to 216.254.75.249
Sending request body:
Request sent; retry is 0.
[status-line] < HTTP/1.1 404 Not Found
[hdr] Date: Tue, 28 Aug 2007 17:27:42 GMT
Header Name: [date], Value: [Tue, 28 Aug 2007 17:27:42 GMT]
[hdr] Server: Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2
mod_ssl/2.2.3 OpenSSL/0.9.8c
Header Name: [server], Value: [Apache/2.2.3 (Debian) DAV/2
SVN/1.4.2
mod_ssl/2.2.3 OpenSSL/0.9.8c]
[hdr] Vary: Accept-Encoding
Header Name: [vary], Value: [Accept-Encoding]
[hdr] Content-Length: 363
Header Name: [content-length], Value: [363]
[hdr] Content-Type: text/html; charset=iso-8859-1
Header Name: [content-type], Value: [text/html;
charset=iso-8859-1]
[hdr]
End of headers.
Reading 363 bytes of response body.
Got 363 bytes.
Running post_send hooks
Request ends, status 404 class 4xx, error line:
404 Not Found
Running destroy hooks.
Request ends.
Locking `unmapped':req: Closing connection for
non-idempotent request.
Running pre_send hooks
Sending request headers:
LOCK /svn/autov/tim/test/unmapped HTTP/1.1
Host: dubstep.brooklynpenguin.com
User-Agent: cadaver/0.22.5 neon/0.26.4
Connection: TE
TE: trailers
Content-Length: 141
Content-Type: application/xml
Depth: infinity
Authorization:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sending request-line and headers:
Connecting to 216.254.75.249
Sending request body:
Request sent; retry is 0.
[status-line] < HTTP/1.1 200 OK
[hdr] Date: Tue, 28 Aug 2007 17:27:42 GMT
Header Name: [date], Value: [Tue, 28 Aug 2007 17:27:42 GMT]
[hdr] Server: Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2
mod_ssl/2.2.3 OpenSSL/0.9.8c
Header Name: [server], Value: [Apache/2.2.3 (Debian) DAV/2
SVN/1.4.2
mod_ssl/2.2.3 OpenSSL/0.9.8c]
[hdr] Authentication-Info:
rspauth="0141845fa18ac5b9e6e941d6647990e8",
cnonce="4acad8a6c56e3e94a86025d7ac586e6b",
nc=00000005, qop=auth
Header Name: [authentication-info], Value:
[rspauth="0141845fa18ac5b9e6e941d6647990e8",
cnonce="4acad8a6c56e3e94a86025d7ac586e6b",
nc=00000005, qop=auth]
[hdr] X-SVN-Creation-Date: 2007-08-28T17:27:42.391812Z
Header Name: [x-svn-creation-date], Value:
[2007-08-28T17:27:42.391812Z]
[hdr] X-SVN-Lock-Owner: tim
Header Name: [x-svn-lock-owner], Value: [tim]
[hdr] Lock-Token:
<opaquelocktoken:832fd38f-35c5-44c0-9512-73ecbb0486ae>
Header Name: [lock-token], Value:
[<opaquelocktoken:832fd38f-35c5-44c0-9512-73ecbb0486ae>
;]
[hdr] Vary: User-Agent,Accept-Encoding
Header Name: [vary], Value: [User-Agent,Accept-Encoding]
[hdr] Content-Length: 378
Header Name: [content-length], Value: [378]
[hdr] Content-Type: text/xml; charset="utf-8"
Header Name: [content-type], Value: [text/xml;
charset="utf-8"]
[hdr]
End of headers.
Reading 378 bytes of response body.
Got 378 bytes.
Running post_send hooks
Running destroy hooks.
Request ends.
succeeded.
dav:/svn/autov/tim/test/>
This currently causes problem with davfs. Since a 200
response is returned, and
a subsequent HEAD request returns 200 (whereas old locknull
behavior would
return 404), Davfs assumes that a third-party PUT request
slipped in. Davfs
then aborts whatever it planned to do with the lock-empty
resource. If a 201
response was returned first, then davfs would know that the
LOCK itself created
the resource.
I posted the bug to the dev mailing list:
http://subversion.tigris.org/servlets/Rea
dMsg?list=dev&msgNo=129529
Julian Reschke is my bug buddy:
http://subversion.tigris.org/servlet
s/ReadMsg?list=dev&&msgNo=129530
Thanks!
-Tim
------------------------------------------------------------
---------
To unsubscribe, e-mail: issues-unsubscribe subversion.tigris.org
For additional commands, e-mail: issues-help subversion.tigris.org
|