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;


Reply via email to