[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