mirror of
https://github.com/rclone/rclone.git
synced 2026-01-04 01:23:24 +00:00
accounting: bwlimit signal handler should always start
The SIGUSR2 signal handler for bandwidth limits currently only starts if rclone is started at a time when a bandwidth limit applies. This means that if rclone starts _outside_ such a time, i.e. with no bandwidth limits, then enters a time where bandwidth limits do apply, it will not be possible to use SIGUSR2 to toggle it. This fixes that by always starting the signal handler, but only toggling the limiter if there is a bandwidth limit configured.
This commit is contained in:
@@ -23,15 +23,26 @@ func (tb *tokenBucket) startSignalHandler() {
|
||||
// This runs forever, but blocks until the signal is received.
|
||||
for {
|
||||
<-signals
|
||||
tb.mu.Lock()
|
||||
tb.toggledOff = !tb.toggledOff
|
||||
tb.curr, tb.prev = tb.prev, tb.curr
|
||||
s := "disabled"
|
||||
if !tb.curr._isOff() {
|
||||
s = "enabled"
|
||||
}
|
||||
tb.mu.Unlock()
|
||||
fs.Logf(nil, "Bandwidth limit %s by user", s)
|
||||
|
||||
func() {
|
||||
tb.mu.Lock()
|
||||
defer tb.mu.Unlock()
|
||||
|
||||
// if there's no bandwidth limit configured now, do nothing
|
||||
if !tb.currLimit.Bandwidth.IsSet() {
|
||||
fs.Debugf(nil, "SIGUSR2 received but no bandwidth limit configured right now, ignoring")
|
||||
return
|
||||
}
|
||||
|
||||
tb.toggledOff = !tb.toggledOff
|
||||
tb.curr, tb.prev = tb.prev, tb.curr
|
||||
s := "disabled"
|
||||
if !tb.curr._isOff() {
|
||||
s = "enabled"
|
||||
}
|
||||
|
||||
fs.Logf(nil, "Bandwidth limit %s by user", s)
|
||||
}()
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user