Author: ehu
Date: Mon Jun 6 21:27:21 2011
New Revision: 1132782
URL: http://svn.apache.org/viewvc?rev=1132782&view=rev
Log:
Check node kind of resolved special nodes to be a directory, in order
to include symlinks pointing to directories.
* subversion/mod_dav_svn/repos.c
(deliver): Extend 'is directory' check for inclusion
in parent path listing to include symlinks-to-directory.
Modified:
subversion/trunk/subversion/mod_dav_svn/repos.c
Modified: subversion/trunk/subversion/mod_dav_svn/repos.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/mod_dav_svn/repos.c?rev=1132782&r1=1132781&r2=1132782&view=diff
==============================================================================
--- subversion/trunk/subversion/mod_dav_svn/repos.c (original)
+++ subversion/trunk/subversion/mod_dav_svn/repos.c Mon Jun 6 21:27:21 2011
@@ -3247,7 +3247,23 @@ deliver(const dav_resource *resource, ap
apr_hash_this(hi, &key, NULL, &val);
dirent = val;
- if (dirent->kind != svn_node_dir)
+ if (dirent->kind == svn_node_file && dirent->special)
+ {
+ svn_node_kind_t resolved_kind;
+ const char *name = key;
+
+ serr = svn_io_check_resolved_path(name, &resolved_kind,
+ resource->pool);
+ if (serr != NULL)
+ return dav_svn__convert_err(serr,
+ HTTP_INTERNAL_SERVER_ERROR,
+ "couldn't fetch dirents "
+ "of SVNParentPath",
+ resource->pool);
+ if (resolved_kind != svn_node_dir)
+ continue;
+ }
+ else if (dirent->kind != svn_node_dir)
continue;
ent->name = key;