[CalendarServer-changes] [8209] CalendarServer/trunk/calendarserver/push/applepush.py

source_changes at macosforge.org source_changes at macosforge.org
Mon Oct 17 17:26:48 PDT 2011


Revision: 8209
          http://trac.macosforge.org/projects/calendarserver/changeset/8209
Author:   sagen at apple.com
Date:     2011-10-17 17:26:48 -0700 (Mon, 17 Oct 2011)
Log Message:
-----------
If APN cert not provided for a given protocol, don't set up an APN service; normalize tokens to lowercase.

Modified Paths:
--------------
    CalendarServer/trunk/calendarserver/push/applepush.py

Modified: CalendarServer/trunk/calendarserver/push/applepush.py
===================================================================
--- CalendarServer/trunk/calendarserver/push/applepush.py	2011-10-17 20:46:16 UTC (rev 8208)
+++ CalendarServer/trunk/calendarserver/push/applepush.py	2011-10-18 00:26:48 UTC (rev 8209)
@@ -85,38 +85,40 @@
 
         for protocol in ("CalDAV", "CardDAV"):
 
-            providerTestConnector = None
-            feedbackTestConnector = None
-            if testConnectorClass is not None:
-                providerTestConnector = testConnectorClass()
-                feedbackTestConnector = testConnectorClass()
+            if settings[protocol]["CertificatePath"]:
 
-            provider = APNProviderService(
-                settings["ProviderHost"],
-                settings["ProviderPort"],
-                settings[protocol]["CertificatePath"],
-                settings[protocol]["PrivateKeyPath"],
-                testConnector=providerTestConnector,
-                reactor=reactor,
-            )
-            provider.setServiceParent(service)
-            service.providers[protocol] = provider
-            service.log_info("APNS %s topic: %s" %
-                (protocol, settings[protocol]["Topic"]))
+                providerTestConnector = None
+                feedbackTestConnector = None
+                if testConnectorClass is not None:
+                    providerTestConnector = testConnectorClass()
+                    feedbackTestConnector = testConnectorClass()
 
-            feedback = APNFeedbackService(
-                service.store,
-                settings["FeedbackUpdateSeconds"],
-                settings["FeedbackHost"],
-                settings["FeedbackPort"],
-                settings[protocol]["CertificatePath"],
-                settings[protocol]["PrivateKeyPath"],
-                testConnector=feedbackTestConnector,
-                reactor=reactor,
-            )
-            feedback.setServiceParent(service)
-            service.feedbacks[protocol] = feedback
+                provider = APNProviderService(
+                    settings["ProviderHost"],
+                    settings["ProviderPort"],
+                    settings[protocol]["CertificatePath"],
+                    settings[protocol]["PrivateKeyPath"],
+                    testConnector=providerTestConnector,
+                    reactor=reactor,
+                )
+                provider.setServiceParent(service)
+                service.providers[protocol] = provider
+                service.log_info("APNS %s topic: %s" %
+                    (protocol, settings[protocol]["Topic"]))
 
+                feedback = APNFeedbackService(
+                    service.store,
+                    settings["FeedbackUpdateSeconds"],
+                    settings["FeedbackHost"],
+                    settings["FeedbackPort"],
+                    settings[protocol]["CertificatePath"],
+                    settings[protocol]["PrivateKeyPath"],
+                    testConnector=feedbackTestConnector,
+                    reactor=reactor,
+                )
+                feedback.setServiceParent(service)
+                service.feedbacks[protocol] = feedback
+
         return service
 
 
@@ -373,7 +375,7 @@
     def dataReceived(self, data):
         self.log_debug("FeedbackProtocol dataReceived %d bytes" % (len(data),))
         timestamp, tokenLength, binaryToken = struct.unpack("!IH32s", data)
-        token = binaryToken.encode("hex")
+        token = binaryToken.encode("hex").lower()
         return self.processFeedback(timestamp, token)
 
     @inlineCallbacks
@@ -548,7 +550,7 @@
         key = request.args.get("key", None)
         if key and token:
             key = key[0]
-            token = token[0].replace(" ", "")
+            token = token[0].replace(" ", "").lower()
             principal = self.principalFromRequest(request)
             guid = principal.record.guid
             yield self.addSubscription(token, key, guid)
@@ -565,7 +567,7 @@
         """
         Add a subscription (or update its timestamp if already there).
 
-        @param token: The device token
+        @param token: The device token, must be lowercase
         @type token: C{str}
 
         @param key: The push key
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20111017/fe473e7a/attachment-0001.html>


More information about the calendarserver-changes mailing list