Compare commits

..

1 Commits

Author SHA1 Message Date
Aveline 45b72b2a73
Merge 0baf6be8b5 into 204909b49a 2025-10-28 07:11:23 +01:00
3 changed files with 15 additions and 27 deletions

View File

@ -305,11 +305,11 @@ func wakeDisplay(force bool, reason string) {
displayLogger.Warn().Err(err).Msg("failed to wake display") displayLogger.Warn().Err(err).Msg("failed to wake display")
} }
if config.DisplayDimAfterSec != 0 && dimTicker != nil { if config.DisplayDimAfterSec != 0 {
dimTicker.Reset(time.Duration(config.DisplayDimAfterSec) * time.Second) dimTicker.Reset(time.Duration(config.DisplayDimAfterSec) * time.Second)
} }
if config.DisplayOffAfterSec != 0 && offTicker != nil { if config.DisplayOffAfterSec != 0 {
offTicker.Reset(time.Duration(config.DisplayOffAfterSec) * time.Second) offTicker.Reset(time.Duration(config.DisplayOffAfterSec) * time.Second)
} }
backlightState = 0 backlightState = 0

View File

@ -111,7 +111,6 @@ type Client struct {
var ( var (
defaultTimerDuration = 1 * time.Second defaultTimerDuration = 1 * time.Second
defaultLinkUpTimeout = 30 * time.Second defaultLinkUpTimeout = 30 * time.Second
defaultDHCPTimeout = 5 * time.Second // DHCP request timeout (not link up timeout)
maxRenewalAttemptDuration = 2 * time.Hour maxRenewalAttemptDuration = 2 * time.Hour
) )
@ -126,11 +125,11 @@ func NewClient(ctx context.Context, ifaces []string, c *Config, l *zerolog.Logge
} }
if cfg.Timeout == 0 { if cfg.Timeout == 0 {
cfg.Timeout = defaultDHCPTimeout cfg.Timeout = defaultLinkUpTimeout
} }
if cfg.Retries == 0 { if cfg.Retries == 0 {
cfg.Retries = 4 cfg.Retries = 3
} }
return &Client{ return &Client{
@ -154,15 +153,9 @@ func NewClient(ctx context.Context, ifaces []string, c *Config, l *zerolog.Logge
}, nil }, nil
} }
func resetTimer(t *time.Timer, attempt int, l *zerolog.Logger) { func resetTimer(t *time.Timer, l *zerolog.Logger) {
// Exponential backoff: 1s, 2s, 4s, 8s, max 8s l.Debug().Dur("delay", defaultTimerDuration).Msg("will retry later")
backoffAttempt := attempt t.Reset(defaultTimerDuration)
if backoffAttempt > 3 {
backoffAttempt = 3
}
delay := time.Duration(1<<backoffAttempt) * time.Second
l.Debug().Dur("delay", delay).Int("attempt", attempt).Msg("will retry later")
t.Reset(delay)
} }
func getRenewalTime(lease *Lease) time.Duration { func getRenewalTime(lease *Lease) time.Duration {
@ -175,14 +168,12 @@ func getRenewalTime(lease *Lease) time.Duration {
func (c *Client) requestLoop(t *time.Timer, family int, ifname string) { func (c *Client) requestLoop(t *time.Timer, family int, ifname string) {
l := c.l.With().Str("interface", ifname).Int("family", family).Logger() l := c.l.With().Str("interface", ifname).Int("family", family).Logger()
attempt := 0
for range t.C { for range t.C {
l.Info().Int("attempt", attempt).Msg("requesting lease") l.Info().Msg("requesting lease")
if _, err := c.ensureInterfaceUp(ifname); err != nil { if _, err := c.ensureInterfaceUp(ifname); err != nil {
l.Error().Err(err).Int("attempt", attempt).Msg("failed to ensure interface up") l.Error().Err(err).Msg("failed to ensure interface up")
resetTimer(t, attempt, c.l) resetTimer(t, c.l)
attempt++
continue continue
} }
@ -197,14 +188,11 @@ func (c *Client) requestLoop(t *time.Timer, family int, ifname string) {
lease, err = c.requestLease6(ifname) lease, err = c.requestLease6(ifname)
} }
if err != nil { if err != nil {
l.Error().Err(err).Int("attempt", attempt).Msg("failed to request lease") l.Error().Err(err).Msg("failed to request lease")
resetTimer(t, attempt, c.l) resetTimer(t, c.l)
attempt++
continue continue
} }
// Successfully obtained lease, reset attempt counter
attempt = 0
c.handleLeaseChange(lease) c.handleLeaseChange(lease)
nextRenewal := getRenewalTime(lease) nextRenewal := getRenewalTime(lease)

View File

@ -46,10 +46,10 @@ export default function SettingsHardwareRoute() {
} }
setBacklightSettings(settings); setBacklightSettings(settings);
handleBacklightSettingsSave(settings); handleBacklightSettingsSave();
}; };
const handleBacklightSettingsSave = (backlightSettings: BacklightSettings) => { const handleBacklightSettingsSave = () => {
send("setBacklightSettings", { params: backlightSettings }, (resp: JsonRpcResponse) => { send("setBacklightSettings", { params: backlightSettings }, (resp: JsonRpcResponse) => {
if ("error" in resp) { if ("error" in resp) {
notifications.error( notifications.error(
@ -81,7 +81,7 @@ export default function SettingsHardwareRoute() {
const duration = enabled ? 90 : -1; const duration = enabled ? 90 : -1;
send("setVideoSleepMode", { duration }, (resp: JsonRpcResponse) => { send("setVideoSleepMode", { duration }, (resp: JsonRpcResponse) => {
if ("error" in resp) { if ("error" in resp) {
notifications.error(m.hardware_power_saving_failed_error({ error: resp.error.data || m.unknown_error() })); notifications.error(m.hardware_power_saving_failed_error({ error: resp.error.data ||m.unknown_error() }));
setPowerSavingEnabled(!enabled); // Attempt to revert on error setPowerSavingEnabled(!enabled); // Attempt to revert on error
return; return;
} }