From 7f2eec3df3ee5e0eecdb25f064353992d1ec2436 Mon Sep 17 00:00:00 2001 From: Victor Shyba Date: Mon, 4 Dec 2017 15:52:56 -0300 Subject: [bug] escape tag and size It was generating spaces, causing split to fail sometimes. --- src/leap/soledad/client/_db/blobs/__init__.py | 6 +++--- src/leap/soledad/server/_streaming_resource.py | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/leap/soledad/client/_db/blobs/__init__.py b/src/leap/soledad/client/_db/blobs/__init__.py index b7b8ad1f..86e45381 100644 --- a/src/leap/soledad/client/_db/blobs/__init__.py +++ b/src/leap/soledad/client/_db/blobs/__init__.py @@ -128,9 +128,9 @@ class StreamDecrypterBuffer(object): self.buf += data if SEPARATOR in self.buf: marker, self.buf = self.buf.split(' ') - assert(len(marker) == 20) # 4 byte size + 16 byte tag - size, tag = marker[:4], marker[4:] - self.current_blob_size = self.size_pack.unpack(size)[0] + size, tag = marker[:8], marker[8:] + tag = base64.urlsafe_b64decode(tag) + self.current_blob_size = int(size, 16) self.received = len(self.buf) blob_id = self.blobs_list.pop(0) buf = DecrypterBuffer(blob_id, self.secret, tag) diff --git a/src/leap/soledad/server/_streaming_resource.py b/src/leap/soledad/server/_streaming_resource.py index 8ce304d1..9b672107 100644 --- a/src/leap/soledad/server/_streaming_resource.py +++ b/src/leap/soledad/server/_streaming_resource.py @@ -20,7 +20,7 @@ A twisted resource that serves download as a single stream of multiple blobs. <- [(size(blob_id), content(blob_id)) for blob_id in DATA] (as a binary stream) """ import json -import struct +import base64 from zope.interface import implementer from twisted.internet.interfaces import IPushProducer @@ -38,7 +38,6 @@ __all__ = ['StreamingResource'] logger = getLogger(__name__) -SIZE_PACKER = struct.Struct('