diff options
author | Laurent Bercot <ska-skaware@skarnet.org> | 2023-10-31 01:34:37 +0000 |
---|---|---|
committer | Laurent Bercot <ska@appnovation.com> | 2023-10-31 01:34:37 +0000 |
commit | ac54bede6aa6953253d1b04443c5bc6062676060 (patch) | |
tree | fb6e8e05261dcdc4a3f5a339e8dc8bec4af5a823 /src/tipideed/responses.c | |
parent | 28e7bfc363aefc591955794e9c031f6962274368 (diff) | |
download | tipidee-ac54bede6aa6953253d1b04443c5bc6062676060.tar.xz |
Some bugfixes
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src/tipideed/responses.c')
-rw-r--r-- | src/tipideed/responses.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/tipideed/responses.c b/src/tipideed/responses.c index f08f83c..ec58622 100644 --- a/src/tipideed/responses.c +++ b/src/tipideed/responses.c @@ -42,8 +42,12 @@ void response_error (tipidee_rql const *rql, char const *docroot, unsigned int s tipidee_defaulttext dt ; char const *file ; size_t salen = g.sa.len ; - if (sarealpath(&g.sa, docroot) == -1 || !stralloc_0(&g.sa)) - strerr_diefu2sys(111, "realpath ", docroot) ; + if (sarealpath(&g.sa, docroot) == -1) + { + if (errno != ENOENT) strerr_diefu2sys(111, "realpath ", docroot) ; + else goto nofile ; + } + if (!stralloc_0(&g.sa)) strerr_diefu1sys(111, "build response") ; if (strncmp(g.sa.s + salen, g.sa.s, g.cwdlen) || g.sa.s[salen + g.cwdlen] != '/') strerr_dief4x(102, "layout error: ", "docroot ", docroot, " points outside of the server's root") ; file = tipidee_conf_get_errorfile(&g.conf, g.sa.s + salen + g.cwdlen + 1, status) ; @@ -89,6 +93,7 @@ void response_error (tipidee_rql const *rql, char const *docroot, unsigned int s } } + nofile: tipidee_response_error_nofile_g(buffer_1, rql, status, dt.reason, dt.text, g.rhdr, g.rhdrn, options & 1 || !g.cont) ; tipidee_log_answer(g.logv, rql, status, 0) ; tain_add_g(&deadline, &g.writetto) ; |