diff --git a/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestImpl.java b/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestImpl.java
index 83d6bde..f68d289 100644
--- a/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestImpl.java
+++ b/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestImpl.java
@@ -48,6 +48,7 @@ import org.apache.jackrabbit.webdav.header.LabelHeader;
 import org.apache.jackrabbit.webdav.header.OverwriteHeader;
 import org.apache.jackrabbit.webdav.header.PollTimeoutHeader;
 import org.apache.jackrabbit.webdav.header.TimeoutHeader;
+import org.apache.jackrabbit.webdav.lock.ActiveLock;
 import org.apache.jackrabbit.webdav.lock.LockInfo;
 import org.apache.jackrabbit.webdav.lock.Scope;
 import org.apache.jackrabbit.webdav.lock.Type;
@@ -541,19 +542,18 @@ public class WebdavRequestImpl implements WebdavRequest, DavConstants {
      * @see org.apache.jackrabbit.webdav.lock.ActiveLock#getToken()
      */
     public boolean matchesIfHeader(DavResource resource) {
-        // no ifheader, no resource or no write lock on resource
-        // >> preconditions ok so far
-        if (!ifHeader.hasValue() || resource == null || !resource.hasLock(Type.WRITE, Scope.EXCLUSIVE)) {
+        // no ifheader or no resource --> preconditions ok so far
+        if (!ifHeader.hasValue() || resource == null) {
             return true;
         }
 
-        boolean isMatching = false;
-        String lockToken = resource.getLock(Type.WRITE, Scope.EXCLUSIVE).getToken();
-        if (lockToken != null) {
-            isMatching = matchesIfHeader(resource.getHref(), lockToken, getStrongETag(resource));
-        } // else: lockToken is null >> the if-header will not match.
+        String token = null;
+        ActiveLock lock = resource.getLock(Type.WRITE, Scope.EXCLUSIVE);
+        if (lock != null) {
+            token = lock.getToken();
+        }
 
-        return isMatching;
+        return matchesIfHeader(resource.getHref(), token, getStrongETag(resource));
     }
 
     /**
@@ -561,7 +561,13 @@ public class WebdavRequestImpl implements WebdavRequest, DavConstants {
      * @see IfHeader#matches(String, String, String)
      */
     public boolean matchesIfHeader(String href, String token, String eTag) {
-        return ifHeader.matches(href, token, isStrongETag(eTag) ?  eTag : "");
+        if (token == null) {
+            token = "";
+        }
+        if (eTag == null || !isStrongETag(eTag)) {
+            eTag = "";
+        }
+        return ifHeader.matches(href, token, eTag);
     }
 
     /**
