1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-06-26 21:15:18 -04:00

core/network: avoid endless probing when no network backend is present

This commit is contained in:
bbedward
2026-06-22 13:08:49 -04:00
parent b0edccb80e
commit 556c0819c4
3 changed files with 32 additions and 14 deletions
+6 -1
View File
@@ -1,6 +1,7 @@
package network package network
import ( import (
"errors"
"fmt" "fmt"
"sync" "sync"
"time" "time"
@@ -10,6 +11,10 @@ import (
"github.com/yeqown/go-qrcode/writer/standard" "github.com/yeqown/go-qrcode/writer/standard"
) )
// ErrNoNetworkBackend is returned when no supported network management daemon
// (NetworkManager, iwd, systemd-networkd, ConnMan) is present on the system.
var ErrNoNetworkBackend = errors.New("no supported network backend found")
func NewManager() (*Manager, error) { func NewManager() (*Manager, error) {
detection, err := DetectNetworkStack() detection, err := DetectNetworkStack()
if err != nil { if err != nil {
@@ -58,7 +63,7 @@ func NewManager() (*Manager, error) {
} }
default: default:
return nil, fmt.Errorf("no supported network backend found: %s", detection.ChosenReason) return nil, fmt.Errorf("%w: %s", ErrNoNetworkBackend, detection.ChosenReason)
} }
m := &Manager{ m := &Manager{
+20 -9
View File
@@ -3,6 +3,7 @@ package server
import ( import (
"bufio" "bufio"
"encoding/json" "encoding/json"
"errors"
"fmt" "fmt"
"net" "net"
"os" "os"
@@ -1481,26 +1482,36 @@ func Start(printDocs bool) error {
log.Info("") log.Info("")
go func() { go func() {
switch err := InitializeNetworkManager(); {
case err == nil:
notifyCapabilityChange()
return
case errors.Is(err, network.ErrNoNetworkBackend):
log.Warn("No supported network backend present; skipping retries")
return
default:
log.Warnf("Network manager unavailable, will retry: %v", err)
}
ticker := time.NewTicker(30 * time.Second) ticker := time.NewTicker(30 * time.Second)
defer ticker.Stop() defer ticker.Stop()
if err := InitializeNetworkManager(); err != nil { for range 10 {
log.Warnf("Network manager unavailable: %v", err) <-ticker.C
} else {
notifyCapabilityChange()
return
}
for range ticker.C {
if networkManager != nil { if networkManager != nil {
return return
} }
if err := InitializeNetworkManager(); err == nil { switch err := InitializeNetworkManager(); {
case err == nil:
log.Info("Network manager initialized") log.Info("Network manager initialized")
notifyCapabilityChange() notifyCapabilityChange()
return return
case errors.Is(err, network.ErrNoNetworkBackend):
log.Warn("No supported network backend present; stopping retries")
return
} }
} }
log.Warn("Network manager still unavailable after retries; giving up")
}() }()
loginctlReady := make(chan struct{}) loginctlReady := make(chan struct{})
+6 -4
View File
@@ -235,7 +235,7 @@ Singleton {
} }
} }
const shouldShowOsd = brightnessInitialized && anyDeviceBrightnessChanged; const shouldShowOsd = brightnessInitialized && anyDeviceBrightnessChanged && !suppressOsd;
if (!brightnessInitialized) { if (!brightnessInitialized) {
brightnessInitialized = true; brightnessInitialized = true;
@@ -810,10 +810,11 @@ Singleton {
if (rescanAttempt < 3) { if (rescanAttempt < 3) {
interval = rescanAttempt === 1 ? 5000 : 8000; interval = rescanAttempt === 1 ? 5000 : 8000;
restart(); restart();
} else { return;
rescanAttempt = 0;
interval = 3000;
} }
rescanAttempt = 0;
interval = 3000;
osdSuppressTimer.restart();
} }
} }
@@ -821,6 +822,7 @@ Singleton {
target: Quickshell target: Quickshell
function onScreensChanged() { function onScreensChanged() {
suppressOsd = true;
screenChangeRescanTimer.rescanAttempt = 0; screenChangeRescanTimer.rescanAttempt = 0;
screenChangeRescanTimer.interval = 3000; screenChangeRescanTimer.interval = 3000;
screenChangeRescanTimer.restart(); screenChangeRescanTimer.restart();