Date: Tue, 5 Nov 2013 15:39:44 GMT From: Pietro Cerutti <gahr@FreeBSD.org> To: freebsd-gnats-submit@FreeBSD.org Subject: ports/183685: [patch] www/apache22 -- backport of mod_dav r1528718 Message-ID: <201311051539.rA5FdifH029703@oldred.freebsd.org> Resent-Message-ID: <201311051540.rA5Fe03c051964@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 183685 >Category: ports >Synopsis: [patch] www/apache22 -- backport of mod_dav r1528718 >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Tue Nov 05 15:40:00 UTC 2013 >Closed-Date: >Last-Modified: >Originator: Pietro Cerutti >Release: >Organization: The FreeBSD Project >Environment: >Description: This patch is a backport of commit r1528718 into mod_dav [1]. This is needed because of a bug [2] due to an incorrect implementation of RFC 4918. The symptoms are a failure to copy a svn tree via DAV: [Tue Nov 05 15:20:49 2013] [error] [client 192.168.250.200] Could not COPY /path/to/copy due to a failed precondition on the source (e.g. locks). [500, #0] [Tue Nov 05 15:20:49 2013] [error] [client 192.168.250.200] The locks could not be queried for verification against a possible "If:" header. [500, #0] [Tue Nov 05 15:20:49 2013] [error] [client 192.168.250.200] Path is not accessible. [403, #405] [1] http://svn.apache.org/viewvc?view=revision&revision=1528718 [2] https://issues.apache.org/bugzilla/show_bug.cgi?id=55306 >How-To-Repeat: >Fix: The attached diff adds a patch to www/apache22. Patch attached with submission follows: Index: files/patch-bug-55306 =================================================================== --- files/patch-bug-55306 (revision 0) +++ files/patch-bug-55306 (working copy) @@ -0,0 +1,46 @@ +--- modules/dav/main/mod_dav.c.orig 2013-06-27 18:54:14.000000000 +0200 ++++ modules/dav/main/mod_dav.c 2013-11-05 16:31:51.000000000 +0100 +@@ -2733,7 +2733,9 @@ + */ + if ((err = dav_validate_request(r, resource, depth, NULL, + &multi_response, +- DAV_VALIDATE_PARENT ++ (is_move ? DAV_VALIDATE_PARENT ++ :DAV_VALIDATE_RESOURCE ++ |DAV_VALIDATE_NO_MODIFY) + | DAV_VALIDATE_USE_424, + NULL)) != NULL) { + err = dav_push_error(r->pool, err->status, 0, +--- modules/dav/main/mod_dav.h.orig 2013/10/03 05:06:08 1528717 ++++ modules/dav/main/mod_dav.h 2013/10/03 05:29:35 1528718 +@@ -1297,6 +1297,9 @@ + the 424 DAV:response */ + #define DAV_VALIDATE_USE_424 0x0080 /* return 424 status, not 207 */ + #define DAV_VALIDATE_IS_PARENT 0x0100 /* for internal use */ ++#define DAV_VALIDATE_NO_MODIFY 0x0200 /* resource is not being modified ++ so allow even if lock token ++ is not provided */ + + /* Lock-null related public lock functions */ + DAV_DECLARE(int) dav_get_resource_state(request_rec *r, +--- modules/dav/main/util.c.orig 2013/10/03 05:06:08 1528717 ++++ modules/dav/main/util.c 2013/10/03 05:29:35 1528718 +@@ -954,13 +954,16 @@ + /* + ** For methods other than LOCK: + ** +- ** If we have no locks, then <seen_locktoken> can be set to true -- ++ ** If we have no locks or if the resource is not being modified ++ ** (per RFC 4918 the lock token is not required on resources ++ ** we are not changing), then <seen_locktoken> can be set to true -- + ** pretending that we've already met the requirement of seeing one + ** of the resource's locks in the If: header. + ** + ** Otherwise, it must be cleared and we'll look for one. + */ +- seen_locktoken = (lock_list == NULL); ++ seen_locktoken = (lock_list == NULL ++ || flags & DAV_VALIDATE_NO_MODIFY); + } + + /* Property changes on: files/patch-bug-55306 ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201311051539.rA5FdifH029703>