панель: живой хотспот выглядел мёртвым
Мастер считает время по monotonic, панель по time.time(). В зеркале состояния last_seen не обновлялся вовсе, поэтому «простой» рос вместе со временем в сети: хотспот, живой 44 минуты, показывался как молчащий 44 минуты. Оператор решил бы, что связь отвалилась. Заодно счётчик принятых кадров: был вечный ноль, теперь считается в маршрутизаторе. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XvX94Vwy7vXWEuiFm1g9Av
Этот коммит содержится в:
@@ -10,6 +10,7 @@ import asyncio
|
||||
import contextlib
|
||||
import signal
|
||||
import sys
|
||||
import time
|
||||
|
||||
from . import config as cfgmod
|
||||
from . import log as logmod
|
||||
@@ -47,6 +48,11 @@ def _wire_state(master: HomebrewMaster, state: State) -> None:
|
||||
sp.colorcode = cfgp.get("colorcode", "")
|
||||
sp.rx_freq = cfgp.get("rx_freq", "")
|
||||
sp.tx_freq = cfgp.get("tx_freq", "")
|
||||
# Мастер считает время по monotonic, панель — по time.time().
|
||||
# Без пересчёта панель показывала «простой» равным времени в сети,
|
||||
# то есть живой хотспот выглядел мёртвым.
|
||||
if p.last_seen:
|
||||
sp.last_seen = time.time() - max(0.0, master._now() - p.last_seen)
|
||||
for pid in list(state.peers):
|
||||
if pid not in master.peers:
|
||||
gone = state.peer_del(pid)
|
||||
|
||||
Ссылка в новой задаче
Block a user