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:
@@ -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{
|
||||||
|
|||||||
@@ -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{})
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user