aboutsummaryrefslogtreecommitdiff
path: root/cli/onionshare_cli/web/send_base_mode.py
diff options
context:
space:
mode:
authorMicah Lee <micah@micahflee.com>2021-11-18 20:03:18 -0800
committerMicah Lee <micah@micahflee.com>2021-11-18 20:03:18 -0800
commitf5b60de2e6f127c731d1c06fdb85d0131bfb7a92 (patch)
tree2e12bc4a239fc367939af83b3fa6b3e7b972704e /cli/onionshare_cli/web/send_base_mode.py
parent236bc33bc850f3209934de003b732705a4b984f4 (diff)
downloadonionshare-f5b60de2e6f127c731d1c06fdb85d0131bfb7a92.tar.gz
onionshare-f5b60de2e6f127c731d1c06fdb85d0131bfb7a92.zip
Use high level tempfile classes that clean up after themselves
Diffstat (limited to 'cli/onionshare_cli/web/send_base_mode.py')
-rw-r--r--cli/onionshare_cli/web/send_base_mode.py17
1 files changed, 9 insertions, 8 deletions
diff --git a/cli/onionshare_cli/web/send_base_mode.py b/cli/onionshare_cli/web/send_base_mode.py
index 27de598a..52720f6a 100644
--- a/cli/onionshare_cli/web/send_base_mode.py
+++ b/cli/onionshare_cli/web/send_base_mode.py
@@ -42,10 +42,11 @@ class SendBaseModeWeb:
self.is_zipped = False
self.download_filename = None
self.download_filesize = None
- self.gzip_filename = None
- self.gzip_filesize = None
self.zip_writer = None
+ # Store the tempfile objects here, so when they're garbage collected the files are deleted
+ self.gzip_files = []
+
# If autostop_sharing, only allow one download at a time
self.download_in_progress = False
@@ -192,12 +193,12 @@ class SendBaseModeWeb:
# gzip compress the individual file, if it hasn't already been compressed
if use_gzip:
if filesystem_path not in self.gzip_individual_files:
- gzip_filename = tempfile.mkstemp("wb+")[1]
- self._gzip_compress(filesystem_path, gzip_filename, 6, None)
- self.gzip_individual_files[filesystem_path] = gzip_filename
-
- # Make sure the gzip file gets cleaned up when onionshare stops
- self.web.cleanup_filenames.append(gzip_filename)
+ self.gzip_files.append(
+ tempfile.TemporaryFile("wb+", dir=self.common.build_tmp_dir())
+ )
+ gzip_file = self.gzip_files[-1]
+ self._gzip_compress(filesystem_path, gzip_file.name, 6, None)
+ self.gzip_individual_files[filesystem_path] = gzip_file.name
file_to_download = self.gzip_individual_files[filesystem_path]
filesize = os.path.getsize(self.gzip_individual_files[filesystem_path])