1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-06-23 11:35:25 -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
import (
"errors"
"fmt"
"sync"
"time"
@@ -10,6 +11,10 @@ import (
"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) {
detection, err := DetectNetworkStack()
if err != nil {
@@ -58,7 +63,7 @@ func NewManager() (*Manager, error) {
}
default:
return nil, fmt.Errorf("no supported network backend found: %s", detection.ChosenReason)
return nil, fmt.Errorf("%w: %s", ErrNoNetworkBackend, detection.ChosenReason)
}
m := &Manager{
+20 -9
View File
@@ -3,6 +3,7 @@ package server
import (
"bufio"
"encoding/json"
"errors"
"fmt"
"net"
"os"
@@ -1481,26 +1482,36 @@ func Start(printDocs bool) error {
log.Info("")
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)
defer ticker.Stop()
if err := InitializeNetworkManager(); err != nil {
log.Warnf("Network manager unavailable: %v", err)
} else {
notifyCapabilityChange()
return
}
for range ticker.C {
for range 10 {
<-ticker.C
if networkManager != nil {
return
}
if err := InitializeNetworkManager(); err == nil {
switch err := InitializeNetworkManager(); {
case err == nil:
log.Info("Network manager initialized")
notifyCapabilityChange()
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{})