[PATCH 0 of 1] Dav: Changes in the destination header in MOVE and DELETE methods for files and/or folders

lcolina at cenditel.gob.ve lcolina at cenditel.gob.ve
Thu Oct 3 15:10:09 UTC 2013


Dear nginx developers,

The dav module of nginx was tested with client Nautilus 3.4.2 to implement a shared file system in operations office.

While testing the ngx_http_dav_module, found some conflicts that are described below:

1. In operations with MOVE method for files and/or directories: It was found a conflict with the destination header, because Nautilus client sends the URI with the user name, but the user name in the destination header is not supported by nginx, resulting in the following error.

acesses_log:
- - 192.168.12.229 - lcolina [27/Sep/2013:09:37:19 -0430] MOVE /data/imagenes/imagen2 HTTP/1.1 "400" 166 "-" "gvfs/1.12.3" "-" 

error_log:
2013/09/27 09:37:19 [debug] 18900#0: *145 http process request header line 
2013/09/27 09:37:19 [debug] 18900#0: *145 http header: "Host: webdav.org.ve" 
2013/09/27 09:37:19 [debug] 18900#0: *145 http header: "Destination: https://lcolina@webdav.org.ve/data/imagenes/imagen" 
2013/09/27 09:37:19 [debug] 18900#0: *145 http header: "Overwrite: F"
2013/09/27 09:37:19 [error] 18900#0: *145 "Destination" URI "https://lcolina@webdav.org.ve/data/imagenes/imagen" is handled by different repository than the source URI while sending to client, client: 192.168.12.229, server: webdav.org.ve, request: "MOVE /data/imagenes/imagen2 HTTP/1.1", host: "webdav.org.ve" 

I think this should be changed because according to the standard is optional URI that contains the user information. So nginx should be able to handle the URI with the user name or not. “The user information, if present, is followed by a commercial at-sign ("@") that delimits it from the host.”
This conflict is solved in line @@ -579,6 +578,16 @@ the patch below.

2. In operations with MOVE method for directories: It was found a conflict when rename a folder from Nautilus client,  the source path contains no final slash, resulting a bad request error because nginx requires source path with final slash.

acesses_log:
- - 192.168.12.229 - lcolina [27/Sep/2013:11:08:34 -0430] MOVE /data/repositorio HTTP/1.1 "400" 166 "-" "gvfs/1.12.3" "-" 

error_log:
2013/09/27 11:08:34 [debug] 27733#0: *146 http copy from: "/srv/data/repositorio" 
2013/09/27 11:08:34 [debug] 27733#0: *146 http copy to: "/srv/data/repositorio1" 
2013/09/27 11:08:34 [error] 27733#0: *146 "/data/repositorio" is collection while sending to client, client: 192.168.12.229, server: webdav.org.ve, request: "MOVE /data/repositorio HTTP/1.1", host: "webdav.org.ve" 
2013/09/27 11:08:34 [debug] 27733#0: *146 http finalize request: 400, "/data/repositorio?" a:1, c:1 
2013/09/27 11:08:34 [debug] 27733#0: *146 http special response: 400, "/data/repositorio?" 
2013/09/27 11:08:34 [debug] 27733#0: *146 http set discard body 
2013/09/27 11:08:34 [debug] 27733#0: *146 xslt filter header 
2013/09/27 11:08:34 [debug] 27733#0: *146 HTTP/1.1 400 Bad Request 

I think this should be changed because according to the standard not mandatory if the directory path contains final slash. So nginx should be able to handle the source path with final slash or not.
This conflict is solved in line @@ -736,10 +745,9 @@ the patch below.

3. In operations with DELETE method for directories: It was found a conflict when delete a folder from Nautilus client, the directory path to eliminate contains no final slash, causing a conflict because nginx requires source path with final slash, similar to the case number 2.

acesses_log:
- - 192.168.12.229 - lcolina [28/Sep/2013:04:03:29 -0430] DELETE /data/imagenes/Carpeta%20sin%20t%C3%ADtulo HTTP/1.1 "409" 160 "-" "gvfs/1.12.3" "-"


error_log:
2013/09/28 04:03:29 [debug] 13397#0: *211 http delete filename: "/srv/data/imagenes/Carpeta sin título"

2013/09/28 04:03:29 [error] 13397#0: *211 DELETE "/srv/data/imagenes/Carpeta sin título" failed (21: Is a directory) while sending to client, client: 192.168.12.229, server: web

dav.org.ve, request: "DELETE /data/imagenes/Carpeta%20sin%20t%C3%ADtulo HTTP/1.1", host: "webdav.org.ve"

2013/09/28 04:03:29 [debug] 13397#0: *211 http finalize request: 409, "/data/imagenes/Carpeta sin título?" a:1, c:1

2013/09/28 04:03:29 [debug] 13397#0: *211 http special response: 409, "/data/imagenes/Carpeta sin título?"

2013/09/28 04:03:29 [debug] 13397#0: *211 http set discard body

2013/09/28 04:03:29 [debug] 13397#0: *211 xslt filter header

2013/09/28 04:03:29 [debug] 13397#0: *211 HTTP/1.1 409 Conflict


So I think nginx should be able to handle the directory path to eliminate with final slash or not.
This conflict is solved in line @@ -338,10 +338,9 @@ the patch below.

Best regards,

Laura Colina
Centro Nacional de Desarrollo e Investigación en Tecnologías Libres (CENDITEL)
Ministerio del Poder Popular para Ciencia, Tecnología e Innovación
República Bolivariana de Venezuela


More information about the nginx-devel mailing list