On 2013-04-27 10:22:41 -0700, Graham Leggett said:
On 23 Apr 2013, at 4:27 AM, William Lewis <[email protected]> wrote:
I've tested the patches in 53910, 54610, and 54611 against trunk as well as 2.4.4; they apply and they fix their respective bugs (at least as far as my test cases go). I don't have an easy way to test 53525, though.

I've committed these to trunk, if you verify for me that the bugs are all fixed I can then propose them for backport to v2.4.

Many thanks! I've verified them, below:

Bug 53910: Oddly enough, the version in trunk doesn't fix the bug. It looks like the reason is that the patch applied was different from the patch in bugzilla --- the call to ap_unescape_url() was moved to after the computation of uri_len, which ended up leaving dav_if_header->uri_len inconsistent.

I assume the reason was to do ap_getparents() before unescaping? Doing the unescaping after ap_getparents() but before computing uri_len works.

On the other hand, the process of canonicalizing two URI-paths so that URI equality can be checked using string compares seems like a really common task that should maybe have its own function. (Assuming it's possible in the general case! Either that or URIs shouldn't be string-compared...) In this code, the canonicalization consists of ap_getparents(), unescaping, and removing any trailing slash, but there are probably a few other things it should do ... and in DAV code, the filesystem provider might want to have a say ...

Bug 54610: Passes my tests in trunk now. Having become a little more familiar with mod_dav, though, I'm unsure about one thing: can anyone comment on whether DAV_VALIDATE_PARENT should be being passed to dav_validate_request() for a COPY as well as a MOVE?

Bug 54611: Fixed in trunk, hooray :)

The patch in 50773 no longer applies [....]

Does this do the trick?

Hmmm, no it doesnt: I'm still getting lock database corruption after a lock expires:

[Mon Apr 29 17:19:14.321182 2013] [dav:error] [pid 57745] [client 127.0.0.1:58534] Could not LOCK /wiml/bugzilla50773/dirA/ due to a failed precondition (e.g. other locks). [500, #0] [Mon Apr 29 17:19:14.321193 2013] [dav:error] [pid 57745] [client 127.0.0.1:58534] The locks could not be queried for verification against a possible "If:" header. [500, #0] [Mon Apr 29 17:19:14.321199 2013] [dav:error] [pid 57745] [client 127.0.0.1:58534] The lock database was found to be corrupt. An indirect lock's direct lock could not be found. [500, #402]


Wim.



Reply via email to