aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2007-12-30 10:24:43 +0000
committerIgor Sysoev <igor@sysoev.ru>2007-12-30 10:24:43 +0000
commitb06db4283a05a7eb9bb198a80e6f26da7f0a6bb9 (patch)
treeb4eda2d623bbfdd2a647f4f84184da828ba4f8f8
parent0ce17d2b5b2b1ea38e729a3fc0c32b7f8906c02a (diff)
downloadnginx-b06db4283a05a7eb9bb198a80e6f26da7f0a6bb9.tar.gz
nginx-b06db4283a05a7eb9bb198a80e6f26da7f0a6bb9.zip
log DELETE errors
-rw-r--r--src/http/modules/ngx_http_dav_module.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/http/modules/ngx_http_dav_module.c b/src/http/modules/ngx_http_dav_module.c
index d1b9b3564..4b6e791eb 100644
--- a/src/http/modules/ngx_http_dav_module.c
+++ b/src/http/modules/ngx_http_dav_module.c
@@ -345,12 +345,15 @@ static ngx_int_t
ngx_http_dav_delete_handler(ngx_http_request_t *r)
{
size_t root;
+ ngx_err_t err;
ngx_int_t rc, depth;
ngx_uint_t dir;
ngx_str_t path;
ngx_file_info_t fi;
if (r->headers_in.content_length_n > 0) {
+ ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
+ "DELETE with body is unsupported");
return NGX_HTTP_UNSUPPORTED_MEDIA_TYPE;
}
@@ -360,21 +363,27 @@ ngx_http_dav_delete_handler(ngx_http_request_t *r)
"http delete filename: \"%s\"", path.data);
if (ngx_file_info(path.data, &fi) == -1) {
- return ngx_http_dav_error(r->connection->log, ngx_errno,
- NGX_HTTP_NOT_FOUND, ngx_file_info_n,
- path.data);
+ err = ngx_errno;
+
+ rc = (err == NGX_ENOTDIR) ? NGX_HTTP_CONFLICT : NGX_HTTP_NOT_FOUND;
+
+ return ngx_http_dav_error(r->connection->log, err,
+ rc, ngx_file_info_n, path.data);
}
if (ngx_is_dir(&fi)) {
if (r->uri.data[r->uri.len - 1] != '/') {
- /* TODO: 301 */
- return NGX_HTTP_BAD_REQUEST;
+ ngx_log_error(NGX_LOG_ERR, r->connection->log, NGX_EISDIR,
+ "DELETE \"%s\" failed", path.data);
+ return NGX_HTTP_CONFLICT;
}
depth = ngx_http_dav_depth(r, NGX_HTTP_DAV_INFINITY_DEPTH);
if (depth != NGX_HTTP_DAV_INFINITY_DEPTH) {
+ ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
+ "\"Depth\" header must be infinity");
return NGX_HTTP_BAD_REQUEST;
}
@@ -387,6 +396,8 @@ ngx_http_dav_delete_handler(ngx_http_request_t *r)
depth = ngx_http_dav_depth(r, 0);
if (depth != 0 && depth != NGX_HTTP_DAV_INFINITY_DEPTH) {
+ ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
+ "\"Depth\" header must be 0 or infinity");
return NGX_HTTP_BAD_REQUEST;
}