mirror of
https://github.com/apache/httpd.git
synced 2025-07-21 23:44:07 +00:00
* modules/dav/fs/repos.c (dav_fs_remove_resource):
Return a 404 if apr_file_remove() fails with an ENOENT error, likely due to a race with another DELETE. PR: 60746 Github: closes #535 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1926172 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
2
changes-entries/pr60746.txt
Normal file
2
changes-entries/pr60746.txt
Normal file
@ -0,0 +1,2 @@
|
||||
*) mod_dav_fs: Return a 404 for DELETE if deletion fails because the
|
||||
resource no longer exists. PR 60746. [Joe Orton]
|
@ -1521,8 +1521,16 @@ static dav_error * dav_fs_remove_resource(dav_resource *resource,
|
||||
|
||||
/* not a collection; remove the file and its properties */
|
||||
if ((status = apr_file_remove(info->pathname, info->pool)) != APR_SUCCESS) {
|
||||
/* ### put a description in here */
|
||||
return dav_new_error(info->pool, HTTP_FORBIDDEN, 0, status, NULL);
|
||||
if (APR_STATUS_IS_ENOENT(status)) {
|
||||
/* Return a 404 if there is a race with another DELETE,
|
||||
* per RFC 4918§9.6. */
|
||||
return dav_new_error(info->pool, HTTP_NOT_FOUND, 0, status,
|
||||
"Cannot remove already-removed resource.");
|
||||
}
|
||||
else {
|
||||
return dav_new_error(info->pool, HTTP_FORBIDDEN, 0, status,
|
||||
"Cannot remove resource");
|
||||
}
|
||||
}
|
||||
|
||||
/* update resource state */
|
||||
|
Reference in New Issue
Block a user