summaryrefslogtreecommitdiff
path: root/modules/mappers
diff options
context:
space:
mode:
authorChristophe Jaillet <jailletc36@apache.org>2018-05-26 12:25:10 +0000
committerChristophe Jaillet <jailletc36@apache.org>2018-05-26 12:25:10 +0000
commit2345de9b94e4699c9bb1fc6e4ceff15f6330e4bd (patch)
tree391173ce6003d125cea879e2d919472620958e26 /modules/mappers
parent5dca628649b93e49ea026786c0f4f2a4f4f0c86a (diff)
downloadhttpd-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.c13
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;