Revision
1597
Author
dreid@apple.com
Date
2007-06-07 11:22:03 -0700 (Thu, 07 Jun 2007)

Log Message

Fix the on demand od lookup during a cache miss.  Handle servers that are broken.

Modified Paths

Diff

Modified: CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py (1596 => 1597)


--- CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py	2007-06-07 17:09:37 UTC (rev 1596)
+++ CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py	2007-06-07 18:22:03 UTC (rev 1597)
@@ -411,7 +411,7 @@
                                          % (recordType,))
 
         if self.requireComputerRecord:
-            subquery = dsquery.match(dsattributes.kDSNAttrServicesLocator, self.servicetag, dsattributes.eDSStartsWith)
+            subquery = dsquery.match(dsattributes.kDSNAttrServicesLocator, self.servicetag, dsattributes.eDSExact)
             if query is None:
                 query = subquery
             else:
@@ -458,21 +458,12 @@
 
         for (key, value) in results.iteritems():
             if self.requireComputerRecord:
-                # Make sure this record has service enabled.
-                enabled = True
-
                 services = value.get(dsattributes.kDSNAttrServicesLocator)
-                if isinstance(services, str):
-                    services = [services]
 
-                for service in services:
-                    if service.startswith(self.servicetag):
-                        if service.endswith(":disabled"):
-                            enabled = False
-                        break
-
-                if not enabled:
-                    log.err("Record is not enabled")
+                if not services:
+                    log.err("No ServicesLocator attribute: %s" % (key,))
+                    log.err("The ServicesLocator attribute was requested in query.  "
+                            "Your directory server appears to be broken.")
                     continue
 
             # Now get useful record info.