                  child.addCallback(checkPrivileges)
                  child.addCallbacks(gotChild, checkPrivilegesError, (childpath,))
                  child.addErrback(completionDeferred.errback)
+@@ -564,7 +614,7 @@
+         See L{IDAVResource.authorize}.
+         """
+         def onError(failure):
+-            log.err("Invalid authentication details: %s" % (request,))
++            log.err("Invalid authentication details: %s" % (failure,))
+             raise HTTPError(UnauthorizedResponse(
+                 request.credentialFactories,
+                 request.remoteAddr
 @@ -574,9 +624,9 @@
              def onErrors(failure):
                  failure.trap(AccessDeniedError)

+                    d = self.quota(request)
+                    d.addCallback(callback)
+                    return d
 
             elif namespace == twisted_dav_namespace:
                 if name == "resource-class":
@@ -366,6 +402,18 @@
         # FIXME: A set would be better here, that that's a python 2.4+ feature.
         qnames = list(self.liveProperties)
 

         for qname in self.deadProperties().list():
             if (qname not in qnames) and (qname[0] != twisted_private_namespace):
                 qnames.append(qname)
 
-        return succeed(qnames)
+        yield qnames
 
+    listProperties = deferredGenerator(listProperties)
+
     def listAllprop(self, request):
         """
         Some DAV properties should not be returned to a C{DAV:allprop} query.
@@ -535,7 +585,7 @@
                 completionDeferred.callback(None)
             else:
