--- a/runtime/PLCObject.py Thu Jan 09 09:45:21 2025 +0100
+++ b/runtime/PLCObject.py Thu Jan 09 09:46:43 2025 +0100
@@ -569,42 +569,55 @@
return getPSKID(partial(self.LogMessage, 0))
+ self.blobs = {} # dict of list if os.path.exists(self.tmpdir):
shutil.rmtree(self.tmpdir)
+ def _append_blob(self, blob, newBlobID): + self.blobs.setdefault(newBlobID,[]).append(blob) + def _pop_blob(self, blobID): + blobs = self.blobs.pop(blobID, None) + # insert same blob list back if not empty + blobs = self.blobs[blobID] = blobs def SeedBlob(self, seed):
blob = (mkstemp(dir=self.tmpdir) + (hashlib.new('md5'),))
_fd, _path, md5sum = blob
newBlobID = md5sum.digest()
- self.blobs[newBlobID] = blob
+ self._append_blob(blob, newBlobID) def AppendChunkToBlob(self, data, blobID):
- blob = self.blobs.pop(blobID, None)
+ blob = self._pop_blob(blobID) newBlobID = md5sum.digest()
- self.blobs[newBlobID] = blob
+ self._append_blob(blob, newBlobID) - for fd, _path, _md5sum in self.blobs.values():
+ for blobs in list(self.blobs.values()): + for fd, _path, _md5sum in blobs: def BlobAsFile(self, blobID, newpath):
- blob = self.blobs.pop(blobID, None)
+ blob = self._pop_blob(blobID) raise Exception(_("Missing data to create file: {}").format(newpath))