diff options
author | Christophe Jaillet <jailletc36@apache.org> | 2018-05-26 12:25:10 +0000 |
---|---|---|
committer | Christophe Jaillet <jailletc36@apache.org> | 2018-05-26 12:25:10 +0000 |
commit | 2345de9b94e4699c9bb1fc6e4ceff15f6330e4bd (patch) | |
tree | 391173ce6003d125cea879e2d919472620958e26 /modules/mappers | |
parent | 5dca628649b93e49ea026786c0f4f2a4f4f0c86a (diff) | |
download | httpd-2345de9b94e4699c9bb1fc6e4ceff15f6330e4bd.tar.gz |
If several directories are given in a UserDir directive, only files in the first existing one are checked. If the file is not found there, the other possible directories are not checked. The doc clearly states that they will be checked one by one, until a match is found or an external redirect is performed.
PR 59636.
While at it, add some debug messages to better understand what is performed.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1832306 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'modules/mappers')
-rw-r--r-- | modules/mappers/mod_userdir.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/modules/mappers/mod_userdir.c b/modules/mappers/mod_userdir.c index 1ec0e9010d..b8b9e92d3e 100644 --- a/modules/mappers/mod_userdir.c +++ b/modules/mappers/mod_userdir.c @@ -63,6 +63,7 @@ #include "httpd.h" #include "http_config.h" #include "http_request.h" +#include "http_log.h" #if !defined(WIN32) && !defined(OS2) && !defined(NETWARE) #define HAVE_UNIX_SUEXEC @@ -265,6 +266,9 @@ static int translate_userdir(request_rec *r) apr_status_t rv; int is_absolute = ap_os_is_path_absolute(r->pool, userdir); + ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(10138) + "checking for UserDir '%s'", userdir); + if (ap_strchr_c(userdir, '*')) prefix = ap_getword(r->pool, &userdir, '*'); @@ -318,11 +322,16 @@ static int translate_userdir(request_rec *r) * anyway, in the hope that some handler might handle it. This can be * used, for example, to run a CGI script for the user. */ + filename = apr_pstrcat(r->pool, filename, dname, NULL); + ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(10139) + "checking for filename '%s'", filename); if (filename && (!*userdirs || ((rv = apr_stat(&statbuf, filename, APR_FINFO_MIN, r->pool)) == APR_SUCCESS || rv == APR_INCOMPLETE))) { - r->filename = apr_pstrcat(r->pool, filename, dname, NULL); + ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(10140) + "'%s' found", filename); + r->filename = filename; ap_set_context_info(r, apr_pstrmemdup(r->pool, r->uri, dname - r->uri), filename); @@ -338,6 +347,8 @@ static int translate_userdir(request_rec *r) return OK; } + ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(10141) + "'%s' NOT found. Trying next UserDir directory (if any)", filename); } return DECLINED; |