changeset 921:cba27113c33c

DELETE may not have the "Depth" header
author Igor Sysoev <igor@sysoev.ru>
date Thu, 14 Dec 2006 22:12:42 +0000
parents da097813ff2e
children a5b9cdfe3e19
files src/http/modules/ngx_http_dav_module.c
diffstat 1 files changed, 15 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- 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;
                 }