Improve TFTP server shutdown and error handling
- Enhance server stop mechanism with more robust socket and thread management - Add better handling of active transfers during server shutdown - Implement additional safety checks and timeout handling - Improve logging and error reporting for server stop process - Prevent potential deadlocks and resource leaks during server termination
This commit is contained in:
@@ -964,9 +964,22 @@ class SerialAppGUI(tk.Tk):
|
||||
"""Остановка TFTP сервера."""
|
||||
if self.tftp_server:
|
||||
try:
|
||||
# Отключаем кнопки на время остановки сервера
|
||||
self.start_tftp_button.config(state="disabled")
|
||||
self.stop_tftp_button.config(state="disabled")
|
||||
|
||||
# Останавливаем сервер
|
||||
self.tftp_server.stop_server()
|
||||
|
||||
# Ждем завершения потока сервера с таймаутом
|
||||
if self.tftp_server_thread:
|
||||
self.tftp_server_thread.join(timeout=2.0)
|
||||
self.tftp_server_thread.join(timeout=5.0)
|
||||
if self.tftp_server_thread.is_alive():
|
||||
self.append_tftp_log("[WARN] Превышено время ожидания остановки сервера")
|
||||
|
||||
# Очищаем ссылки на сервер и поток
|
||||
self.tftp_server = None
|
||||
self.tftp_server_thread = None
|
||||
|
||||
# Обновляем состояние кнопок
|
||||
self.start_tftp_button.config(state="normal")
|
||||
@@ -983,6 +996,10 @@ class SerialAppGUI(tk.Tk):
|
||||
except Exception as e:
|
||||
self.append_tftp_log(f"[ERROR] Ошибка остановки сервера: {str(e)}")
|
||||
messagebox.showerror("Ошибка", f"Не удалось остановить TFTP сервер: {str(e)}")
|
||||
|
||||
# Восстанавливаем состояние кнопок в случае ошибки
|
||||
self.start_tftp_button.config(state="disabled")
|
||||
self.stop_tftp_button.config(state="normal")
|
||||
|
||||
def append_tftp_log(self, message):
|
||||
"""Добавление сообщения в лог TFTP сервера."""
|
||||
|
||||
Reference in New Issue
Block a user