While on the topic of ETags - I just picked up this regression in 2.2.7-dev

Some innocuous changes to make ETags always 64bit in modules/http/http_etag.c
broke DAV due to it's private dav_fs_getetag routine (ETags never matched
in ap_meets_condition due to the different format).

Patch below makes mod_dav consistent with the format in http_etag.c
and fixes the cond_put regression with litmus

Picked this up today while running litmus against 2.2.6 and 2.2.7-dev.

I've filed a bug. Would be nice to get this verified and in before 2.2.7

Index: modules/dav/fs/repos.c
===================================================================
--- modules/dav/fs/repos.c      (revision 607400)
+++ modules/dav/fs/repos.c      (working copy)
@@ -1777,10 +1777,10 @@
        return apr_pstrdup(ctx->pool, "");

    if (ctx->finfo.filetype != 0) {
-        return apr_psprintf(ctx->pool, "\"%lx-%lx-%lx\"",
-                           (unsigned long) ctx->finfo.inode,
-                           (unsigned long) ctx->finfo.size,
-                           (unsigned long) ctx->finfo.mtime);
+        return apr_psprintf(ctx->pool, "\"%llx-%llx-%llx\"",
+                           (apr_uint64_t) ctx->finfo.inode,
+                           (apr_uint64_t) ctx->finfo.size,
+                           (apr_uint64_t) ctx->finfo.mtime);
    }

    return apr_psprintf(ctx->pool, "\"%lx\"", (unsigned long) ctx->finfo.mtime);


Reply via email to