Index: modules/dav/fs/repos.c =================================================================== --- modules/dav/fs/repos.c (revision 607949) +++ modules/dav/fs/repos.c (working copy) @@ -350,6 +350,12 @@ if (status != APR_SUCCESS) { apr_file_close(inf); + if(APR_STATUS_IS_ENOENT(status)) { + return dav_new_error(p, HTTP_CONFLICT, 0, + "Could not open file for writing; " + "intermediate collection does not exist."); + } + return dav_new_error(p, MAP_IO2HTTP(status), 0, "Could not open file for writing"); } Index: modules/dav/main/mod_dav.c =================================================================== --- modules/dav/main/mod_dav.c (revision 607949) +++ modules/dav/main/mod_dav.c (working copy) @@ -2631,6 +2631,10 @@ return dav_error_response(r, lookup.rnew->status, "Destination URI had an error."); } + if (!dav_get_provider(lookup.rnew)) { + return dav_error_response(r, HTTP_FORBIDDEN, + "Destination URI had an error."); + } /* Resolve destination resource */ err = dav_get_resource(lookup.rnew, 0 /* label_allowed */,