diff --git a/src/leap/soledad/client/_db/blobs/__init__.py b/src/leap/soledad/client/_db/blobs/__init__.py
index d4eddb8fab247d4f12318615e90368001164ef63..cacfe638b2dee8e35b72751428e883af1b01193c 100644
--- a/src/leap/soledad/client/_db/blobs/__init__.py
+++ b/src/leap/soledad/client/_db/blobs/__init__.py
@@ -104,8 +104,12 @@ class DecrypterBuffer(object):
         if self.decrypter:
             real_size = self.decrypter.decrypted_content_size
             return self.decrypter.endStream(), real_size
-        else:
+        elif hasattr(self, 'raw_data'):
+            # Externally encrypted blob, see Incoming API specification
             return self.raw_data, self.raw_data.tell()
+        else:
+            msg = "Incomplete Blob: %s" % self.doc_info.doc_id
+            raise RetriableTransferError(msg)
 
 
 class StreamDecrypterBuffer(object):
diff --git a/tests/blobs/test_decrypter_buffer.py b/tests/blobs/test_decrypter_buffer.py
index 83fbaad378da333411f14819a640f78221f8efde..f6e039464799c414357126860f7b0574ac52e47b 100644
--- a/tests/blobs/test_decrypter_buffer.py
+++ b/tests/blobs/test_decrypter_buffer.py
@@ -27,6 +27,7 @@ from twisted.internet import defer
 from leap.soledad.client._db.blobs import DecrypterBuffer
 from leap.soledad.client._db.blobs import BlobManager
 from leap.soledad.client._db.blobs import FIXED_REV
+from leap.soledad.client._db.blobs.errors import RetriableTransferError
 from leap.soledad.client import _crypto
 
 
@@ -70,3 +71,15 @@ class DecrypterBufferCase(unittest.TestCase):
         fd = BytesIO('up and up')
         manager._client.put = _check_result
         yield manager._encrypt_and_upload(self.doc_info.doc_id, fd)
+
+    @defer.inlineCallbacks
+    def test_incomplete_decryption(self):
+        # SCENARIO: Transport failed and close was called with incomplete data
+        # CASE 1: Incomplete preamble
+        encrypted = (yield self.blob.encrypt()).getvalue()
+        encrypted = encrypted[:20]  # only 20 bytes of preamble arrived
+        tag = encrypted[-16:]
+        buf = DecrypterBuffer(self.doc_info.doc_id, self.secret, tag)
+        buf.write(encrypted)
+        self.assertRaises(RetriableTransferError,
+                          buf.close)