fix(multimodal): reconnect websocket with fresh auth
This commit is contained in:
@@ -547,11 +547,15 @@ static void control_plane_multimodal_event_bridge(control_plane_multimodal_event
|
||||
case CONTROL_PLANE_MULTIMODAL_EVENT_TRANSPORT_DISCONNECTED:
|
||||
control_plane_clear_cloud_chouqian_pending("transport disconnected");
|
||||
control_plane_multimodal_stop_uplink();
|
||||
ESP_LOGI(TAG, "Schedule fresh-auth reconnect after transport disconnect");
|
||||
(void)control_plane_schedule_websocket_wait_task();
|
||||
break;
|
||||
|
||||
case CONTROL_PLANE_MULTIMODAL_EVENT_TRANSPORT_ERROR:
|
||||
control_plane_clear_cloud_chouqian_pending("transport error");
|
||||
control_plane_multimodal_stop_uplink();
|
||||
ESP_LOGI(TAG, "Schedule fresh-auth reconnect after transport error");
|
||||
(void)control_plane_schedule_websocket_wait_task();
|
||||
break;
|
||||
|
||||
case CONTROL_PLANE_MULTIMODAL_EVENT_TASK_FAILED:
|
||||
|
||||
@@ -462,10 +462,15 @@ void control_plane_multimodal_mark_transport_unavailable(
|
||||
control_plane_multimodal_stop_uplink();
|
||||
|
||||
bool close_transport = reason == CONTROL_PLANE_TRANSPORT_LOSS_PROTOCOL_ERROR ||
|
||||
reason == CONTROL_PLANE_TRANSPORT_LOSS_WS_ERROR ||
|
||||
reason == CONTROL_PLANE_TRANSPORT_LOSS_WS_DISCONNECTED ||
|
||||
reason == CONTROL_PLANE_TRANSPORT_LOSS_SEND_TEXT_FAILURE ||
|
||||
reason == CONTROL_PLANE_TRANSPORT_LOSS_LISTENING_TIMEOUT ||
|
||||
reason == CONTROL_PLANE_TRANSPORT_LOSS_NO_RESPONSE_TIMEOUT;
|
||||
if (close_transport) {
|
||||
ESP_LOGI(TAG,
|
||||
"Retire unavailable transport: reason=%s; next start requires fresh auth",
|
||||
transport_loss_reason_name(reason));
|
||||
esp_err_t stop_err = domain_runtime_multimodal_transport_stop(0);
|
||||
if (stop_err != ESP_OK) {
|
||||
ESP_LOGW(TAG,
|
||||
|
||||
Reference in New Issue
Block a user