[CalendarServer-changes] [8341] CalendarServer/trunk/calendarserver/push

source_changes at macosforge.org source_changes at macosforge.org
Mon Nov 28 11:07:16 PST 2011


Revision: 8341
          http://trac.macosforge.org/projects/calendarserver/changeset/8341
Author:   sagen at apple.com
Date:     2011-11-28 11:07:14 -0800 (Mon, 28 Nov 2011)
Log Message:
-----------
Catch/log malformed APN feedback messages

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

Modified: CalendarServer/trunk/calendarserver/push/applepush.py
===================================================================
--- CalendarServer/trunk/calendarserver/push/applepush.py	2011-11-23 23:40:43 UTC (rev 8340)
+++ CalendarServer/trunk/calendarserver/push/applepush.py	2011-11-28 19:07:14 UTC (rev 8341)
@@ -26,7 +26,7 @@
 from twext.web2.server import parsePOSTData
 from twisted.application import service
 from twisted.internet import reactor, protocol
-from twisted.internet.defer import inlineCallbacks, returnValue
+from twisted.internet.defer import inlineCallbacks, returnValue, succeed
 from twisted.internet.protocol import ClientFactory, ReconnectingClientFactory
 from twistedcaldav.extensions import DAVResource, DAVResourceWithoutChildrenMixin
 from twistedcaldav.resource import ReadOnlyNoCopyResourceMixIn
@@ -374,7 +374,12 @@
 
     def dataReceived(self, data):
         self.log_debug("FeedbackProtocol dataReceived %d bytes" % (len(data),))
-        timestamp, tokenLength, binaryToken = struct.unpack("!IH32s", data)
+        try:
+            timestamp, tokenLength, binaryToken = struct.unpack("!IH32s", data)
+        except struct.error:
+            self.log_warn("FeedbackProtocol received malformed data: %s" %
+                (data.encode("hex"),))
+            return succeed(None)
         token = binaryToken.encode("hex").lower()
         return self.processFeedback(timestamp, token)
 

Modified: CalendarServer/trunk/calendarserver/push/test/test_applepush.py
===================================================================
--- CalendarServer/trunk/calendarserver/push/test/test_applepush.py	2011-11-23 23:40:43 UTC (rev 8340)
+++ CalendarServer/trunk/calendarserver/push/test/test_applepush.py	2011-11-28 19:07:14 UTC (rev 8341)
@@ -115,9 +115,12 @@
         yield txn.commit()
         self.assertEquals(len(subscriptions), 2)
 
+        # Simulate malformed feedback
+        connector = service.feedbacks["CalDAV"].testConnector
+        yield connector.receiveData("malformed")
+
         # Simulate feedback
         timestamp = 2000
-        connector = service.feedbacks["CalDAV"].testConnector
         binaryToken = token.decode("hex")
         feedbackData = struct.pack("!IH32s", timestamp, len(binaryToken),
             binaryToken)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20111128/4be5cfa3/attachment.html>


More information about the calendarserver-changes mailing list