diff --git a/tool/net/redbean.c b/tool/net/redbean.c index 6202fc611..681ed9558 100644 --- a/tool/net/redbean.c +++ b/tool/net/redbean.c @@ -2556,6 +2556,13 @@ static char *ServeErrorImpl(unsigned code, const char *reason, } } +static char *ServeErrorWithPath(unsigned code, const char *reason, + const char *path, size_t pathlen) { + ERRORF("(srvr) server error: %d %s %`'.*s", code, reason, + pathlen, path); + return ServeErrorImpl(code, reason, NULL); +} + static char *ServeErrorWithDetail(unsigned code, const char *reason, const char *details) { ERRORF("(srvr) server error: %d %s", code, reason); @@ -3308,7 +3315,7 @@ static char *HandleFolder(const char *path, size_t pathlen) { } else { LockInc(&shared->c.forbiddens); WARNF("(srvr) directory %`'.*s lacks index page", pathlen, path); - return ServeError(403, "Forbidden"); + return ServeErrorWithPath(403, "Forbidden", path, pathlen); } } @@ -6027,7 +6034,7 @@ static char *Route(const char *host, size_t hostlen, const char *path, return ServeStatusz(); } else { LockInc(&shared->c.notfounds); - return ServeError(404, "Not Found"); + return ServeErrorWithPath(404, "Not Found", path, pathlen); } } @@ -6050,7 +6057,7 @@ static char *RoutePath(const char *path, size_t pathlen) { } else { LockInc(&shared->c.forbiddens); WARNF("(srvr) asset %`'.*s %#o isn't readable", pathlen, path, m); - return ServeError(403, "Forbidden"); + return ServeErrorWithPath(403, "Forbidden", path, pathlen); } } else if ((r = FindRedirect(path, pathlen)) != -1) { return HandleRedirect(redirects.p + r);