From: Jeff Trawick Date: Thu, 7 Aug 2008 15:12:00 +0000 (+0000) Subject: mod_dav_fs: Retrieve minimal system information about directory X-Git-Tag: 2.3.0~388 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=484b633aad6f72c374bb3d2f97b610d609757920;p=thirdparty%2Fapache%2Fhttpd.git mod_dav_fs: Retrieve minimal system information about directory entries when walking a DAV fs, resolving a performance degradation on Windows. PR: 45464 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@683626 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index ec8aebb18dc..76585ba2d41 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,10 @@ Changes with Apache 2.3.0 [ When backported to 2.2.x, remove entry from this file ] + *) mod_dav_fs: Retrieve minimal system information about directory + entries when walking a DAV fs, resolving a performance degradation on + Windows. PR 45464. [Jeff Trawick] + *) mod_cgid: Pass along empty command line arguments from an ISINDEX query that has consecutive '+' characters in the QUERY_STRING, matching the behavior of mod_cgi. diff --git a/modules/dav/fs/repos.c b/modules/dav/fs/repos.c index 8b60f37dec5..48d481a30ad 100644 --- a/modules/dav/fs/repos.c +++ b/modules/dav/fs/repos.c @@ -1475,10 +1475,8 @@ static dav_error * dav_fs_walker(dav_fs_walker_context *fsctx, int depth) /* append this file onto the path buffer (copy null term) */ dav_buffer_place_mem(pool, &fsctx->path1, dirent.name, len + 1, 0); - - /* ### Optimize me, dirent can give us what we need! */ status = apr_stat(&fsctx->info1.finfo, fsctx->path1.buf, - APR_FINFO_NORM | APR_FINFO_LINK, pool); + APR_FINFO_TYPE | APR_FINFO_LINK, pool); if (status != APR_SUCCESS && status != APR_INCOMPLETE) { /* woah! where'd it go? */ /* ### should have a better error here */