diff options
author | Louis-Francis Ratté-Boulianne <louis-francis.ratte-boulianne@collabora.co.uk> | 2011-03-27 20:43:14 +0300 |
---|---|---|
committer | Louis-Francis Ratté-Boulianne <louis-francis.ratte-boulianne@collabora.co.uk> | 2011-08-06 12:14:09 +0200 |
commit | bc35bded5abdb32290ed142b5f47cff9113f9ce4 (patch) | |
tree | 0222d640ab64321f447491214c88f9747350d6fd | |
parent | 333839f829b2161b21052d54693ebf7264d2b3bc (diff) |
p2p: be more flexible when receiving broken TLPv1 chunks from libpurple
-rw-r--r-- | papyon/msnp2p/transport/TLPv1.py | 6 | ||||
-rw-r--r-- | papyon/msnp2p/transport/transport_manager.py | 2 |
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] |