mirror of
https://github.com/smittix/intercept.git
synced 2026-07-03 15:23:39 -07:00
fix(meshcore): surface backend error messages and extend polling window
- Store last status message on MeshcoreClient so error details survive beyond the SSE event (which isn't active during connecting state) - Status endpoint now returns message field so the frontend can show the real reason (e.g. 'Connection failed after retries: ...') - Extend JS polling from 30s to 90s to outlast the backend's 65s retry sequence (5+15+45s delays) before declaring timeout Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+5
-3
@@ -250,6 +250,7 @@ class MeshcoreClient:
|
||||
|
||||
def __init__(self) -> None:
|
||||
self._state = ConnectionState.DISCONNECTED
|
||||
self._status_message: str | None = None
|
||||
self._config: ConnectionConfig | None = None
|
||||
self._event_queue: queue.Queue = queue.Queue(maxsize=500)
|
||||
self._nodes: dict[str, MeshcoreNode] = {}
|
||||
@@ -261,14 +262,15 @@ class MeshcoreClient:
|
||||
|
||||
# -- State --
|
||||
|
||||
def get_state(self) -> ConnectionState:
|
||||
"""Return the current connection state."""
|
||||
def get_state(self) -> tuple[ConnectionState, str | None]:
|
||||
"""Return the current connection state and last status message."""
|
||||
with self._lock:
|
||||
return self._state
|
||||
return self._state, self._status_message
|
||||
|
||||
def _set_state(self, state: ConnectionState, **extra) -> None:
|
||||
with self._lock:
|
||||
self._state = state
|
||||
self._status_message = extra.get("message")
|
||||
# Push the status event OUTSIDE the lock (avoids deadlock; _push is queue-based)
|
||||
payload: dict = {"state": state.value}
|
||||
payload.update(extra)
|
||||
|
||||
Reference in New Issue
Block a user