summaryrefslogtreecommitdiff
path: root/onionshare
diff options
context:
space:
mode:
authorMiguel Jacq <mig@mig5.net>2018-10-02 15:41:29 +1000
committerMiguel Jacq <mig@mig5.net>2018-10-02 15:41:29 +1000
commit875b538347a421f23b6ef5f667f68b74d31984ed (patch)
tree5354fb48d7e1e5206c77f4874597e06bf94c3d46 /onionshare
parent61d2e6cc5f70f9761b2988d9bb5c1a4e52593a86 (diff)
downloadonionshare-875b538347a421f23b6ef5f667f68b74d31984ed.tar.gz
onionshare-875b538347a421f23b6ef5f667f68b74d31984ed.zip
Make auto-stop timer work on CLI when an upload is still in progress on expiry
Diffstat (limited to 'onionshare')
-rw-r--r--onionshare/__init__.py7
-rw-r--r--onionshare/web/receive_mode.py4
2 files changed, 11 insertions, 0 deletions
diff --git a/onionshare/__init__.py b/onionshare/__init__.py
index 715c5571..42294ec1 100644
--- a/onionshare/__init__.py
+++ b/onionshare/__init__.py
@@ -198,6 +198,13 @@ def main(cwd=None):
print(strings._("close_on_timeout"))
web.stop(app.port)
break
+ if mode == 'receive':
+ if web.receive_mode.upload_count == 0 or not web.receive_mode.uploads_in_progress:
+ print(strings._("close_on_timeout"))
+ web.stop(app.port)
+ break
+ else:
+ web.receive_mode.can_upload = False
# Allow KeyboardInterrupt exception to be handled with threads
# https://stackoverflow.com/questions/3788208/python-threading-ignores-keyboardinterrupt-exception
time.sleep(0.2)
diff --git a/onionshare/web/receive_mode.py b/onionshare/web/receive_mode.py
index 60909a23..4ea95201 100644
--- a/onionshare/web/receive_mode.py
+++ b/onionshare/web/receive_mode.py
@@ -20,6 +20,7 @@ class ReceiveModeWeb(object):
self.can_upload = True
self.upload_count = 0
+ self.uploads_in_progress = []
self.define_routes()
@@ -273,6 +274,8 @@ class ReceiveModeRequest(Request):
'content_length': self.content_length
})
+ self.web.receive_mode.uploads_in_progress.append(self.upload_id)
+
self.previous_file = None
def _get_file_stream(self, total_content_length, content_type, filename=None, content_length=None):
@@ -298,6 +301,7 @@ class ReceiveModeRequest(Request):
self.web.add_request(self.web.REQUEST_UPLOAD_FINISHED, self.path, {
'id': self.upload_id
})
+ self.web.receive_mode.uploads_in_progress.remove(self.upload_id)
def file_write_func(self, filename, length):