You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Julian Reschke (Jira)" <ji...@apache.org> on 2020/06/15 14:47:00 UTC
[jira] [Comment Edited] (JCR-4570) WebdavRequestImpl does not check
ETags if there is no resource or no exclusive write lock
[ https://issues.apache.org/jira/browse/JCR-4570?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17135927#comment-17135927 ]
Julian Reschke edited comment on JCR-4570 at 6/15/20, 2:46 PM:
---------------------------------------------------------------
FWIW, it seems the "classical" HTTP conditional header fields aren't checked at all, for instance the test below fails:
{noformat}
Index: jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/RFC4918IfHeaderTest.java
===================================================================
--- jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/RFC4918IfHeaderTest.java (revision 1878856)
+++ jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/RFC4918IfHeaderTest.java (working copy)
@@ -60,6 +60,29 @@
}
}
+ public void testPutIfMatchEtag() throws IOException {
+
+ String testuri = this.root + "iftest";
+ HttpPut put = new HttpPut(testuri);
+ try {
+ put = new HttpPut(testuri);
+ String condition = "\"an-etag-this-testcase-invented\"";
+ put.setEntity(new StringEntity("1"));
+ put.setHeader("If-Match", condition);
+ int status = this.client.execute(put, this.context).getStatusLine().getStatusCode();
+ assertEquals("status: " + status, 412, status);
+ put.releaseConnection();
+
+ }
+ finally {
+ put.releaseConnection();
+ HttpDelete delete = new HttpDelete(testuri);
+ int status = this.client.execute(delete, this.context).getStatusLine().getStatusCode();
+ assertTrue("status: " + status, status == 200 || status == 204 || status == 404);
+ delete.releaseConnection();
+ }
+ }
+
{noformat}
was (Author: reschke):
FWIW, it seems the "classical" HTTP conditional header fields aren't checked at all, for instance the etst below fails:
Index: jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/RFC4918IfHeaderTest.java
===================================================================
--- jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/RFC4918IfHeaderTest.java (revision 1878856)
+++ jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/RFC4918IfHeaderTest.java (working copy)
@@ -60,6 +60,29 @@
}
}
{noformat}
+ public void testPutIfMatchEtag() throws IOException {
+
+ String testuri = this.root + "iftest";
+ HttpPut put = new HttpPut(testuri);
+ try {
+ put = new HttpPut(testuri);
+ String condition = "\"an-etag-this-testcase-invented\"";
+ put.setEntity(new StringEntity("1"));
+ put.setHeader("If-Match", condition);
+ int status = this.client.execute(put, this.context).getStatusLine().getStatusCode();
+ assertEquals("status: " + status, 412, status);
+ put.releaseConnection();
+
+ }
+ finally {
+ put.releaseConnection();
+ HttpDelete delete = new HttpDelete(testuri);
+ int status = this.client.execute(delete, this.context).getStatusLine().getStatusCode();
+ assertTrue("status: " + status, status == 200 || status == 204 || status == 404);
+ delete.releaseConnection();
+ }
+ }
+
{noformat}
> WebdavRequestImpl does not check ETags if there is no resource or no exclusive write lock
> -----------------------------------------------------------------------------------------
>
> Key: JCR-4570
> URL: https://issues.apache.org/jira/browse/JCR-4570
> Project: Jackrabbit Content Repository
> Issue Type: Bug
> Components: jackrabbit-webdav
> Reporter: Manfred Baedke
> Assignee: Manfred Baedke
> Priority: Minor
> Attachments: JCR-4570.patch
>
>
> Also other lock types are completely ignored.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)