mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-07-17 18:06:06 +00:00
fix(box): detect disconnect when handler.run() returns normally
The generic Handler.run() catches ConnectionClosedError and breaks out of its loop (normal return) instead of raising, because it has no disconnect_callback. The old code only triggered reconnection in the except branch, so a clean WebSocket close was never detected. Now treat handler.run() returning normally (after successful handshake) as a disconnect event, triggering the reconnection callback.
This commit is contained in:
@@ -251,18 +251,21 @@ class BoxRuntimeConnector(ManagedRuntimeConnector):
|
|||||||
if not connected.is_set():
|
if not connected.is_set():
|
||||||
connect_error.append(exc)
|
connect_error.append(exc)
|
||||||
connected.set()
|
connected.set()
|
||||||
|
return
|
||||||
|
|
||||||
|
# If we reach here, handler.run() returned normally (connection
|
||||||
|
# closed) or raised after the initial handshake succeeded.
|
||||||
|
# Either way, treat it as a disconnect.
|
||||||
|
if connected.is_set():
|
||||||
|
if self._uses_websocket():
|
||||||
|
self.ap.logger.error('Disconnected from Box runtime, trying to reconnect...')
|
||||||
|
if self.runtime_disconnect_callback is not None:
|
||||||
|
await self.runtime_disconnect_callback(self)
|
||||||
else:
|
else:
|
||||||
# Connection was established but then dropped — this is a
|
self.ap.logger.error(
|
||||||
# disconnect after successful handshake.
|
'Disconnected from Box runtime via stdio. '
|
||||||
if self._uses_websocket():
|
'Cannot automatically reconnect — please restart LangBot.'
|
||||||
self.ap.logger.error('Disconnected from Box runtime, trying to reconnect...')
|
)
|
||||||
if self.runtime_disconnect_callback is not None:
|
|
||||||
await self.runtime_disconnect_callback(self)
|
|
||||||
else:
|
|
||||||
self.ap.logger.error(
|
|
||||||
'Disconnected from Box runtime via stdio. '
|
|
||||||
'Cannot automatically reconnect — please restart LangBot.'
|
|
||||||
)
|
|
||||||
|
|
||||||
return new_connection_callback
|
return new_connection_callback
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user