Author: markt Date: Mon Jan 8 15:52:15 2018 New Revision: 1820576 URL: http://svn.apache.org/viewvc?rev=1820576&view=rev Log: When using WebDAV to copy a file resource to a destination that requires a collection to be overwritten, ensure that the operation succeeds rather than fails (with a 500 response). This enables Tomcat to pass two additional tests from the Litmus WebDAV test suite.
Modified: tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java?rev=1820576&r1=1820575&r2=1820576&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java (original) +++ tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java Mon Jan 8 15:52:15 2018 @@ -1742,19 +1742,23 @@ public class WebdavServlet extends Defau } } } + // WebDAV Litmus test attempts to copy/move a file over a collection + // Need to remove trailing / from destination to enable test to pass + if (!destResource.exists() && dest.endsWith("/") && dest.length() > 1) { + // Convert destination name from collection (with trailing '/') + // to file (without trailing '/') + dest = dest.substring(0, dest.length() - 1); + } try (InputStream is = sourceResource.getInputStream()) { - if (!resources.write(dest, is, - false)) { - errorList.put(source, - Integer.valueOf(WebdavStatus.SC_INTERNAL_SERVER_ERROR)); + if (!resources.write(dest, is, false)) { + errorList.put(source, Integer.valueOf(WebdavStatus.SC_INTERNAL_SERVER_ERROR)); return false; } } catch (IOException e) { log(sm.getString("webdavservlet.inputstreamclosefail", source), e); } } else { - errorList.put(source, - Integer.valueOf(WebdavStatus.SC_INTERNAL_SERVER_ERROR)); + errorList.put(source, Integer.valueOf(WebdavStatus.SC_INTERNAL_SERVER_ERROR)); return false; } return true; Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1820576&r1=1820575&r2=1820576&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Mon Jan 8 15:52:15 2018 @@ -67,6 +67,12 @@ <code>setHeader()</code> or <code>addHeader()</code> as well as when it is set via <code>setContentType()</code>. (markt) </fix> + <fix> + When using WebDAV to copy a file resource to a destination that requires + a collection to be overwritten, ensure that the operation succeeds + rather than fails (with a 500 response). This enables Tomcat to pass two + additional tests from the Litmus WebDAV test suite. (markt) + </fix> </changelog> </subsection> <subsection name="Coyote"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org