From 2949c78b564df5eb52ae6b9777d301ddca7d18fe Mon Sep 17 00:00:00 2001 From: PaulVua Date: Tue, 17 Mar 2026 18:12:15 +0100 Subject: [PATCH] Fix: timeout 2s sur nmcli dans get_config_sqlite pour eviter blocage Si nmcli est lent ou bloque, on garde la valeur DB au lieu de freezer toutes les pages. Co-Authored-By: Claude Opus 4.6 (1M context) --- html/launcher.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/html/launcher.php b/html/launcher.php index c0f39a0..36da695 100755 --- a/html/launcher.php +++ b/html/launcher.php @@ -67,20 +67,20 @@ if ($type == "get_config_sqlite") { } // Detect real WiFi status from wlan0 (DB value may be stale) - $wlan0_conn = trim(shell_exec("nmcli -t -f GENERAL.CONNECTION device show wlan0 2>/dev/null | cut -d: -f2")); - if (!empty($wlan0_conn) && $wlan0_conn !== '--') { + // Use timeout to prevent blocking if nmcli hangs + $wlan0_conn = trim(shell_exec("timeout 2 nmcli -t -f GENERAL.CONNECTION device show wlan0 2>/dev/null | cut -d: -f2")); + if ($wlan0_conn !== null && $wlan0_conn !== '' && $wlan0_conn !== '--') { $is_hotspot = (stripos($wlan0_conn, 'hotspot') !== false); $real_status = $is_hotspot ? 'hotspot' : 'connected'; - } else { - $real_status = 'disconnected'; - } - // Update DB if out of sync - if (isset($result['WIFI_status']) && $result['WIFI_status'] !== $real_status) { - $update_stmt = $db->prepare("UPDATE config_table SET value = ? WHERE key = 'WIFI_status'"); - $update_stmt->execute([$real_status]); + // Update DB if out of sync + if (isset($result['WIFI_status']) && $result['WIFI_status'] !== $real_status) { + $update_stmt = $db->prepare("UPDATE config_table SET value = ? WHERE key = 'WIFI_status'"); + $update_stmt->execute([$real_status]); + } + $result['WIFI_status'] = $real_status; } - $result['WIFI_status'] = $real_status; + // If timeout or nmcli fails, keep DB value as-is // Return JSON response header('Content-Type: application/json');