From 7f65f5e40e968c3c6903b2a86fc68019f03af455 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Thu, 20 Nov 2025 17:49:17 +0100 Subject: [PATCH] Enhance message queuing with improved error handling and logging in WebSocket server - Implement detailed logging for message queuing attempts, including message size and copy operations. - Add comprehensive null checks for user data and message queue validity before pushing messages to the queue. - Introduce exception handling to manage potential errors during message queuing, improving stability and error visibility. --- src/websocket_server.cpp | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/src/websocket_server.cpp b/src/websocket_server.cpp index 2a99238..25eda22 100644 --- a/src/websocket_server.cpp +++ b/src/websocket_server.cpp @@ -411,8 +411,37 @@ int WebSocketServer::wsCallback(struct lws *wsi, break; } - udCopy->messageQueue.push(messageToQueue); - std::cout << "ud->messageQueue.size(): " << udCopy->messageQueue.size() << std::endl; + // Versuche, die Nachricht zur Queue hinzuzufügen + try { + std::cout << "Versuche push() aufzurufen mit Nachricht: " << messageToQueue.length() << " Bytes" << std::endl; + // Erstelle eine Kopie der Nachricht, um sicherzustellen, dass sie gültig ist + std::string msgCopy = messageToQueue; + std::cout << "Nachricht kopiert für push: " << msgCopy.length() << " Bytes" << std::endl; + + // Prüfe ob udCopy noch gültig ist + if (!udCopy) { + std::cerr << "[RECEIVE] udCopy ist nullptr vor push()" << std::endl; + break; + } + + // Prüfe ob messageQueue noch gültig ist + try { + volatile size_t testSize2 = udCopy->messageQueue.size(); + (void)testSize2; + } catch (...) { + std::cerr << "[RECEIVE] messageQueue ist ungültig vor push()" << std::endl; + break; + } + + udCopy->messageQueue.push(msgCopy); + std::cout << "push() erfolgreich, neue Größe: " << udCopy->messageQueue.size() << std::endl; + } catch (const std::exception &e) { + std::cerr << "[RECEIVE] Exception beim push(): " << e.what() << std::endl; + break; + } catch (...) { + std::cerr << "[RECEIVE] Unbekannte Exception beim push()" << std::endl; + break; + } } catch (const std::exception &e) { std::cerr << "[RECEIVE] Fehler beim Zugriff auf messageQueue: " << e.what() << std::endl; break;