          else:
              return unauthenticatedPrincipal
  
-@@ -666,32 +731,26 @@
+@@ -666,31 +731,25 @@
          present on this resource, it tries to get it from the parent, unless it
          is the root or has no parent.
          """

-            principalCollections = waitForDeferred(self.principalCollections(request))
-            yield principalCollections
-            principalCollections = principalCollections.getResult()
+            yield None
+            return
 
-            if len(principalCollections) == 0:
-                log.msg("DAV:principal-collection-set property cannot be found on the resource being authorized: %s" % self)
-            else:
-                log.msg("Could not find principal matching user id: %s" % authid)
-            raise HTTPError(responsecode.FORBIDDEN)
-
     findPrincipalForAuthID = deferredGenerator(findPrincipalForAuthID)
 
+    def authorizationPrincipal(self, request, authid, authnPrincipal, authnURI):

         return succeed(qname in self.liveProperties or self.deadProperties().contains(qname))
 
     def readProperty(self, property, request):
@@ -253,7 +263,7 @@
 
                 if name == "principal-collection-set":
                     d = self.principalCollections(request)
-                    d.addCallback(lambda collections: davxml.PrincipalCollectionSet(*collections))
+                    d.addCallback(lambda collections: davxml.PrincipalCollectionSet(*[davxml.HRef.fromString(uri) for uri in collections]))
                     return d
 
                 def ifAllowed(privileges, callback):
@@ -286,6 +296,32 @@
                         d.addCallback(gotACL)
                         return d
                     return ifAllowed((davxml.ReadACL(),), callback)
