# HG changeset patch # User Igor Sysoev # Date 1166134362 0 # Node ID cba27113c33c122aeca340cd5aafc8c8af636088 # Parent da097813ff2e1b389d5fcf69236636f29539fe77 DELETE may not have the "Depth" header diff --git a/src/http/modules/ngx_http_dav_module.c b/src/http/modules/ngx_http_dav_module.c --- a/src/http/modules/ngx_http_dav_module.c +++ b/src/http/modules/ngx_http_dav_module.c @@ -106,6 +106,7 @@ ngx_http_dav_handler(ngx_http_request_t ngx_int_t rc; ngx_str_t path; ngx_file_info_t fi; + ngx_table_elt_t *depth; ngx_http_dav_loc_conf_t *dlcf; /* TODO: Win32 */ @@ -162,11 +163,15 @@ ngx_http_dav_handler(ngx_http_request_t if (ngx_is_dir(&fi)) { - if (r->uri.data[r->uri.len - 1] != '/' - || r->headers_in.depth == NULL - || r->headers_in.depth->value.len != sizeof("infinity") - 1 - || ngx_strcmp(r->headers_in.depth->value.data, "infinity") - != 0) + if (r->uri.data[r->uri.len - 1] != '/') { + return NGX_HTTP_BAD_REQUEST; + } + + depth = r->headers_in.depth; + + if (depth + && (depth->value.len != sizeof("infinity") - 1 + || ngx_strcmp(depth->value.data, "infinity") != 0)) { return NGX_HTTP_BAD_REQUEST; } @@ -183,9 +188,11 @@ ngx_http_dav_handler(ngx_http_request_t return NGX_HTTP_BAD_REQUEST; } - if (r->headers_in.depth - && r->headers_in.depth->value.len == 1 - && r->headers_in.depth->value.data[0] == '1') + depth = r->headers_in.depth; + + if (depth + && depth->value.len == 1 + && depth->value.data[0] == '1') { return NGX_HTTP_BAD_REQUEST; }