summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLouis-Francis Ratté-Boulianne <louis-francis.ratte-boulianne@collabora.co.uk>2011-03-27 20:43:14 +0300
committerLouis-Francis Ratté-Boulianne <louis-francis.ratte-boulianne@collabora.co.uk>2011-08-06 12:14:09 +0200
commitbc35bded5abdb32290ed142b5f47cff9113f9ce4 (patch)
tree0222d640ab64321f447491214c88f9747350d6fd
parent333839f829b2161b21052d54693ebf7264d2b3bc (diff)
p2p: be more flexible when receiving broken TLPv1 chunks from libpurple
-rw-r--r--papyon/msnp2p/transport/TLPv1.py6
-rw-r--r--papyon/msnp2p/transport/transport_manager.py2
2 files changed, 6 insertions, 2 deletions
diff --git a/papyon/msnp2p/transport/TLPv1.py b/papyon/msnp2p/transport/TLPv1.py
index e63caca..57dd095 100644
--- a/papyon/msnp2p/transport/TLPv1.py
+++ b/papyon/msnp2p/transport/TLPv1.py
@@ -102,9 +102,11 @@ class TLPHeader(object):
self.chunk_size = chunk_size
if self.blob_offset + self.chunk_size > self.blob_size:
- raise TLPParseError(1, "chunk end exceeds blob size", header)
+ logger.warning(TLPParseError(1, "chunk end exceeds blob size", header))
+ self.chunk_size = chunk_size
if self.blob_size >= 0 and self.chunk_size == 0:
- raise TLPParseError(1, "empty chunk for non-empty blob", header)
+ logger.warning(TLPParseError(1, "empty chunk for non-empty blob", header))
+ self.blob_size = 0
class MessageChunk(object):
diff --git a/papyon/msnp2p/transport/transport_manager.py b/papyon/msnp2p/transport/transport_manager.py
index 28b3d18..80b919d 100644
--- a/papyon/msnp2p/transport/transport_manager.py
+++ b/papyon/msnp2p/transport/transport_manager.py
@@ -151,6 +151,8 @@ class P2PTransportManager(gobject.GObject):
if key in self._blacklist:
return
+ if chunk.size == 0 or chunk.blob_size == 0:
+ return
if key in self._data_blobs:
blob = self._data_blobs[key]