mirror of
https://github.com/9001/copyparty.git
synced 2025-10-03 09:49:29 +02:00
ensure OS signals hit main-thread as intended;
use sigmasks to block SIGINT, SIGTERM, SIGUSR1 from all other threads also initiate shutdown by calling sighandler directly, in case this misses anything and that is still unreliable (discovered by `--exit=idx` being noop once in a blue moon)
This commit is contained in:
parent
2c92dab165
commit
87c60a1ec9
10 changed files with 63 additions and 43 deletions
19
bin/u2c.py
19
bin/u2c.py
|
@ -1,8 +1,8 @@
|
|||
#!/usr/bin/env python3
|
||||
from __future__ import print_function, unicode_literals
|
||||
|
||||
S_VERSION = "1.16"
|
||||
S_BUILD_DT = "2024-04-20"
|
||||
S_VERSION = "1.17"
|
||||
S_BUILD_DT = "2024-05-09"
|
||||
|
||||
"""
|
||||
u2c.py: upload to copyparty
|
||||
|
@ -79,12 +79,21 @@ req_ses = requests.Session()
|
|||
|
||||
|
||||
class Daemon(threading.Thread):
|
||||
def __init__(self, target, name=None, a=None):
|
||||
# type: (Any, Any, Any) -> None
|
||||
threading.Thread.__init__(self, target=target, args=a or (), name=name)
|
||||
def __init__(self, target, name = None, a = None):
|
||||
threading.Thread.__init__(self, name=name)
|
||||
self.a = a or ()
|
||||
self.fun = target
|
||||
self.daemon = True
|
||||
self.start()
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
signal.pthread_sigmask(signal.SIG_BLOCK, [signal.SIGINT, signal.SIGTERM])
|
||||
except:
|
||||
pass
|
||||
|
||||
self.fun(*self.a)
|
||||
|
||||
|
||||
class File(object):
|
||||
"""an up2k upload task; represents a single file"""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue